指针是否也有任何地址或内存分配?

7 c pointers

如果指针存储变量的地址......那么我们从哪里得到指针?

我问的是,如果我们直接使用指针,那么必须有一个位置,我们得到这个指针?

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个字节.


Suv*_*apa 3

查看这篇 SO 文章可以更好地理解指针。 理解指针有哪些障碍以及如何克服这些障碍?

就你的问题而言,如果我理解你想要什么,那么基本上,当你声明一个指针时,你指定分配给系统中每个内存单元的地址或数字索引(通常是一个字节或一个字) )。然后系统提供一个操作来检索存储在该地址的存储器中的值。