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

2024-12-01 19:41:14
推荐回答(3个)
回答1:

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

回答2:

int i,j,*p=i 是把i的值赋给指针p 原p的地址不变 int i,j,*p=&i是把i的值和地址都赋给p 地址发生变化

回答3:

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

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