Rob*_*ino 27
是的,声明的指针在内存中有自己的位置.
在上面的示例中,您有一个变量'b',它存储值"17".
int b = 17; /* the value of 'b' is stored at memory location 1462 */
Run Code Online (Sandbox Code Playgroud)
当您创建指向该变量的指针时,指针将存储在其自己的内存位置.
int *a;
a = &b; /* the pointer 'a' is stored at memory location 874 */
Run Code Online (Sandbox Code Playgroud)
编译器的工作就是知道"获取指针"的位置.当源代码引用指针'a'时,编译器将其转换为 - >"无论地址值存储在内存位置874中".
注意:此图在技术上并不正确,因为在32位系统中,指针和int都使用四个字节.
i_a*_*orf 10
是.下面我有一个int和一个指向int的代码和打印出每个内存地址的代码.
int a;
printf("address of a: %x", &a);
int* pA = &a;
printf("address of pA: %x", &pA);
Run Code Online (Sandbox Code Playgroud)
32位系统上的指针占用4个字节.
查看这篇 SO 文章可以更好地理解指针。 理解指针有哪些障碍以及如何克服这些障碍?
就你的问题而言,如果我理解你想要什么,那么基本上,当你声明一个指针时,你指定分配给系统中每个内存单元的地址或数字索引(通常是一个字节或一个字) )。然后系统提供一个操作来检索存储在该地址的存储器中的值。