梵高 发表于 2017-4-18 21:13:08

c语言指针

#include<stdio.h>
void main()
{
    int *p,i,a;p=a;
    for(i=0;i<10;i++)
      *p++=i;
    p=a;             //不懂
    for(i=0;i<10;i++)
      printf("a[%d]=%d\n",i,*p++);
}

为什么要写第二个p=a?

太阳花田 发表于 2017-4-18 22:01:01

因为你前面的for的赋值操作将是通过移动指针来完成的,结束之后p指针并不是指向数组a的首地址
你后面要打印数组的值,将p=a是让p重新指向数组的首地址在通过移动指针来打印

zlj19931010 发表于 2017-4-18 22:21:11

for(i=0;i<10;i++)
      *p++=i;
这段代码完了之后P已经跑到 a数组的最后面了

for(i=0;i<10;i++)
      printf("a[%d]=%d\n",i,*p++);

这段代码 通过p指针从头把a数组打印一遍

所以需要p重新定位到a数组的第一个元素的地址,就是a字面量里面存放的值咯
页: [1]
查看完整版本: c语言指针