C语言中动态内存分配出来的指针p和&p
动态申请内存
int *p = (int *)malloc(sizeof(int));
*p = 10;
问题: &p 和 p 这俩指针的指向?
首先p是在堆申请的动态内存。
&p是p的地址; p指向的是10所在的这块内存
的地址。
所以这俩地址是不一样的。
图如:
指向 指向
&p --------> p --------> int(10)
p的地址 10所在的这块内存的地址 10所在的这块内存
代码: main.c
#include <stdio.h>
int main()
{
int *p = (int*)malloc(sizeof(int));
*p = 10;
printf("&p=%p, p=%p\n", &p, p);
return 0;
}
编译运行:
root@vimk:~/codet# gcc -o m main.c
root@vimk:~/codet# ./m
&p=0x7ffe5a33d520, p=0x5635e06a0720
可以看到&p和p的值不一样。
本文链接
https://blog.csdn.net/weixin_45497541/article/details/120932565
欢迎各位光临。