我以为我按照C教程理解了指针的基本概念,但是在实际编码时确实感到困惑。我有一些问题:

1-假设我有:

customList arrayOfLists[3]; //global
//...
void someMethod()
{
   int i;
   for (i=0; i<3; i++)
   {
        customList l = arrayOfLists[i];

        //METHOD1
        //Next time I come back to this function, element is still there!
        removeFirstElement(&l);

        //METHOD2
        //Next time I come back to thsi function, element is gone!
        //removeFirstElement(&(arrayOfLists[i]));
   }
}

为什么Method1和Method2不能以相同的方式工作?在这两种情况下,我基本上都是说删除位于addressX的列表的第一个元素。它会创建数组的副本吗?

2-有什么区别:
struct1.ptr1->ptr2->someIntValue //1
&(struct1).ptr1->ptr2->someIntValue //2

第二种方法对我来说没有意义,我也不是很清楚那里发生了什么,但是它似乎有效。我期待第一种工作方式,但没有给我正确的答案。

3-假设我这样做:
ptr2 = ptrToStruct;
ptr1 = ptr2;
ptr2->intProp = 5;
ptr2 = ptrToStruct2;

ptr1是否仍指向初始存储位置,还是相同的ptr2?什么是ptr1-> intProp?

谢谢。

最佳答案

指针很难抓住,因为它们在不使用指针的情况下描述计算机的内存而又不参考该内存。

如果您学习一些汇编程序,则指针将更容易理解。

关于c - 在C语言中苦苦挣扎,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6246018/

10-11 21:14