是不是P就是所指向变量x的地址,*p就是变量x所被赋予的值的地址?
追答还是仓库的例子
p是“33号”
*p是“33号”仓库里的内容
打印时候p打印是33号,*p打印33号仓库里的内容
再问一个问题,求大哥别打我!
【问题1】 有以下代码
int*p;
p=&x;
int t=*p;
那就说明 *p是int 型的;
问:那么为什么,以下写法不对?
int *p;
*p=32;
(问题2) int x=32;
int *p;
*p=&x;
printf ("%d",p);
请问输出的这个奇怪的值代表什么?
问题1
*p=32不对 int *p只是给你一个仓库编号牌子,没给你仓库,你能存东西吗?不能。
p = &x 将x的地址给p x是一个仓库,把p这个牌子贴在x仓库上,这样就能存东西了
问题2
printf("%d", p),打印p,仓库牌子的编号(地址)而*p是仓库中的内容
如果*p是x的地址,那么printf ("%p",*p);的输出值就应该等于 printf(“%p",&x);可是我试了一下,不相等啊
追答我重新思考了一下
%p应该是输出指针地址的值
就像图中的int x = 10; int *p = &x;
以上表明我们定义了个指针变量p并把x的地址赋给了p
对指针p:
当我们只输出p的%p时,即把指针p的内存地址里的值输出即为x的变量的地址
当我们只输出*p的%p时,即先取p内存地址中的值,再把这个值当作指针指向一个新的内存单元然后输出这个单元的值,即为x变量的值10,十六进制为a
对于变量x:
当我们只输出x的%p时,既把x地址中的的值输出,即和*p输出%p时的值一样
当我们只输出&x的%p时,既把x的地址输出,与p输出%p一样
知识有限,如果有错还望指出