如何解释 int i=3,*p=&i; ?

来源:百度知道 编辑:UC知道 时间:2024/05/10 23:08:20
C里边这样写是对的 但我还是有点迷惑 P是指针变量 可以存放地址 那声明里边用*P是什么,存放的又是什么呢,*p不是相当于指向某个类型的变量吗,那&i赋给变量*p岂不是地址赋给变量而不是指针变量p,这不就乱了吗? 请各位前辈给晚生一些指点,这个问题一直疑惑不解?

Int *p //定义一个指针
  Int i=3 //定义一个变量,值初始化为 3。从这开始,变量 i 的值为 3
  P=&i //将变量 i 的内存地址赋值给指针 p,此时指针 p 的值是变量 i 的内存地址,
  //此时,*p 就相当于变量 i
  //*p 取指针 p 指向的内存存储的值,就是变量 i 的值。以下一句可以说是多余的。

“*”号在不同的背景下有不同的含义,就像我们说的“开门”一样,对着汽车说,“门”是指汽车门,对着房间说,“门”是指房间门。
你提出的 int i=3,*p=&i; 这是一个声明语句,在声明中为了把指针和一般变量区别开,所以在指针变量前加一个“* ”。注意此时“*”号只是起一个和普通变量相区别的作用。
当“*”号不是在声明语句中出现时,它有了另一个含义,就是表示指针变量指向地址所储存的值。

如果前面没*的话,p也就是个普通的变量了。*是说明p是指针的符号。

int i=3,*p=&i;
就是:
int i=3;
int *p;
p = &i;

-------------------
int *p=&i; 的意思是 声明 p 是指针, 初始化指针地址 同 i 的地址。

printf("%d\n",*p);
打出 3

----------------------------------
*p不是相当于指向某个类型的变量吗?

*p 在语句里相当于指向某个类型的变量的值。
*p 在声明里,只是说它是指针。

形式逻辑 对 指针 不成立!(C 语言就是如此奇怪)

这个是定义时对变量初始化
,*p=&i;部分实际上是这样的
int *p;p=&i;/*这两句话和int *p=&i;是等价的 */
这样就理解了吧

P是指针变量,在这里用取地址符&来获取变量i的地址,让后让p指向这个地址。
其实,在c程序规定:我们定义指针变量,如果采用逗号隔开的话,需要每