<分区>
从此处发布的问题数量来看,很明显人们在了解指针和指针算法时遇到了一些相当基础的问题。
我很想知道为什么。它们从来没有真正给我带来过重大问题(尽管我第一次了解它们是在新石器时代)。为了更好地回答这些问题,我想知道人们觉得困难的地方。
那么,如果您正在为指针苦苦挣扎,或者您最近突然“明白了”,那么指针的哪些方面给您带来了问题?
<分区>
从此处发布的问题数量来看,很明显人们在了解指针和指针算法时遇到了一些相当基础的问题。
我很想知道为什么。它们从来没有真正给我带来过重大问题(尽管我第一次了解它们是在新石器时代)。为了更好地回答这些问题,我想知道人们觉得困难的地方。
那么,如果您正在为指针苦苦挣扎,或者您最近突然“明白了”,那么指针的哪些方面给您带来了问题?
最佳答案
当我第一次开始使用它们时,我遇到的最大问题是语法。
int* ip;
int * ip;
int *ip;
都是一样的
但是:
int* ip1, ip2; //second one isn't a pointer!
int *ip1, *ip2;
为什么?因为声明的“指针”部分属于变量,而不属于类型。
然后使用非常相似的符号取消引用:
*ip = 4; //sets the value of the thing pointed to by ip to '4'
x = ip; //hey, that's not '4'!
x = *ip; //ahh... there's that '4'
除非你真的需要一个指针...然后你使用一个符号!
int *ip = &x;
一致性万岁!
然后,显然只是为了成为 SCSS 并证明他们有多聪明,许多库开发人员使用指针到指针到指针,如果他们期望这些东西的数组,那么为什么不只传递一个指针也是如此。
void foo(****ipppArr);
要调用它,我需要指向整型指针的指针数组的地址:
foo(&(***ipppArr));
六个月后,当我必须维护这段代码时,我会花更多的时间去弄清楚这一切意味着什么,而不是从头开始重写。 (是的,可能是语法错误——我已经有一段时间没有用 C 语言做过任何事情了。我有点想念它,但后来我有点受虐狂)
关于c - 人们觉得 C 指针有什么困难?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4025768/