对于C或C++中的许多新的,甚至是老的大学生来说,为什么指针会成为混乱的主要因素?是否有任何工具或思维过程可以帮助您理解指针在变量,函数和更高级别的工作方式?
有什么好的做法可以让人达到"啊哈,我明白了"的水平,而不会让他们陷入整体概念的困境?基本上,钻取方案.
用于:
int *a;
Run Code Online (Sandbox Code Playgroud)
a是可以存储整数的地址.
&a是存储a的地址.然后,&a存储在哪里?并且,&(&a)存储在哪里?并且,&(&(&a))存储在哪里?地址存储在哪里停止?
我已将整数变量的地址存储在指针中,然后将该先前的地址存储到另一个指针中.我无法理解它是如何工作的.
#include <iostream>
using namespace std;
#include <stdio.h>
int main ()
{
int var;
int *ptr;
int **pptr;
var = 30;
/* take the address of var */
ptr = &var;
/* take the address of ptr using address of operator & */
pptr = &ptr;
/* take the value using pptr */
printf("Value of var = %d\n", var );
printf("Value available at ptr = %d\n", ptr );
printf("Value available at pptr = %d\n", pptr);
return 0;
}
Run Code Online (Sandbox Code Playgroud)