Tag: 指针

无法从’int *’转换为’int ‘?

我知道这可能是一个常见的问题,但我试图搜索但仍然找不到明确的答案。 我有以下代码: int* f() { int a[] = {1,2,3}; return a; } int main() { int a[] = f(); // Error here getch(); return 0; } 此代码生成错误消息:“ Cannot convert from ‘int *’ to ‘int []’ ” 我发现这很奇怪,因为我已经读过指针和数组是相似的。 例如,我们可以使用[i]代替*(a + i)。 请问有人给我一个明确的解释吗?

在ObjectiveC中使用指针的最大优势是什么?

我意识到99%的人认为“这是什么……”但请帮助我理解使用pointers这个概念。 我相信我的具体问题可以帮助很多新手。 我理解指针是什么,它们是对内存中地址的引用,通过使用(*)运算符,您可以获取该地址中的值。 让我们说: int counter = 10; int *somePointer = &counter; 现在我在counter内存中有地址,我可以通过这样做间接指出它的值: int x = *somePointer; 这使x = 10 ,对吧? 但这是最基本的例子,对于这种情况我可以使用int x = counter; 并获得该值,所以请解释为什么指针在Objective-C和其他一些语言中确实是如此重要…在什么情况下只有指针才有意义? 欣赏它。

如何学习C指针?

我经常使用指针,但是每当我和它们一起工作时,我觉得可能不会像我期望的那样工作。 我的头脑不确定他们的行为方式。 你有什么建议? 我想更好地学习指针。

为什么VS2013抱怨“使用未初始化的内存”?

我有一个代码如下: #include #include typedef struct { char *a; char *b; int c; } my_type; void free_my_type(my_type *p) { if (p) { if (p->a) free(p->a); // line 12 if (p->b) free(p->b); // line 13 free(p); } } int main(void) { my_type *p = malloc(sizeof(*p)); p->a = malloc(10); p->b = malloc(10); p->c = 10; free_my_type(p); return 0; […]

在C中是malloc(256)和malloc(sizeof(char)* 256)等价吗?

我看到人们经常编写C代码,例如: char *ptr = malloc(sizeof(char)*256); 这真的有必要吗? 根据定义,标准说sizeof(char)==1 ,所以写入是不合理的: char *ptr = malloc(256); 谢谢,Boda Cydo。

C中的函数指针数组

我很难理解函数指针的语法。 我要做的是,有一个函数指针数组,不带参数,并返回一个void指针。 任何人都可以帮忙吗?

在C中混淆指针

我有一个以上的疑问所以请耐心等待。 有人能告诉我为什么这段代码失败了吗? #include void main(int argc,char **argv) /*assume program called with arguments aaa bbb ccc*/ { char **list={“aaa”,”bbb”,”ccc”}; printf(“%s”,argv[1]);/*prints aaa*/ printf(“%s”,list[1]); /*fails*/ } 我认为它与指针内容的指针有关,我不明白这一点。 所以我试过: #include void main() { char **list={“aaa”,”bbb”,”ccc”}; char *ptr; ptr=list; printf(“%s”,ptr);/*this prints the first string aaa*/ /* My second question is how do i increment the value of ptr so that […]

在c中将数据插入文件

我需要在现有文件中的第 45 个字节之前添加一个字符串。 我尝试使用fseek ,如下所示。 int main() { FILE *fp; char str[] = “test”; fp = fopen(FILEPATH,”a”); fseek(fp,-45, SEEK_END); fprintf(fp,”%s”,str); fclose(fp); return(0); } 我期望这段代码会在EOF的第 45 个字符之前添加“test”,相反,它只是将“test”附加到EOF。 请帮我找到解决方案。 这是我之前的问题的延续 将项添加到c中最后一行之前的文件中

如何根据“Endianness”将数据存储在位级别?

我读到关于Endianness并理解蹲下…… 所以我写了这个 main() { int k = 0xA5B9BF9F; BYTE *b = (BYTE*)&k; //value at *b is 9f b++; //value at *b is BF b++; //value at *b is B9 b++; //value at *b is A5 } k等于A5 B9 BF 9F 和(字节)指针“ walk ”o / p是9F BF b9 A5 所以我得到它的字节向后存储……好吧。 〜 所以现在我想它是如何存储在BIT级别的…… 我的意思是“9f”(1001 1111)存储为“f9”(1111 1001)? 所以我写了这个 […]

如何在C 中声明指向结构数组的指针

指针和C的新手,我的程序需要一个结构数组的指针,并能够将此指针传递给函数。 声明struct数组类型的指针的正确方法是什么?我的函数参数应该采用哪种指针? 这是我的尝试: #define HAND_SIZE 5 struct Card { char suit; char face; }; void printHandResults(struct Card *hand[HAND_SIZE]); int main(void) { struct Card hand[HAND_SIZE]; struct Card (*handPtr)[HAND_SIZE]; //Correct way to declare? handPtr = &hand; … printHandResults(handPtr); } void printHandResults(struct Card *hand[HAND_SIZE]) { … } 这是我得到的警告: warning: incompatible pointer types passing ‘struct Card (*)[5]’ to parameter […]