c语言定义时 int i,j,*p=i;和int i,j,*p=&i;有什么区别?能详细解释下吗?

int i,j,*p=i;时*P是直接取i的地址吧,int i,j,*p=&i;时*p取的是什么?
最新回答
懂鍀灬舍去丶

2024-09-28 09:55:17

楼主,概念没弄清楚
*p 在定义时代表,定义的是指针类型, 在使用的时候代表的是解引用
&i ,代表的是取变量i 的地址,
int *p=&i;表示定义一个指针变量的同时,并把i的地址赋给p
int *p=i; 这个的意思是,把i里存储的内容当做地址赋给p
山间雾安

2024-09-28 05:59:37

int i,j,*p=i 是把i的值赋给指针p 原p的地址不变 int i,j,*p=&i是把i的值和地址都赋给p 地址发生变化
人潮拥挤我该远离

2024-09-28 16:06:25

你搞错了第一种用法一般是错误的。 这时候*p不知道指到什么内容了,有可能导致程序崩溃。

第二种*p取的是i的内容。