(基础)指针的引用调用,通过指针进行数组的输入输出,指针与++

值:     a[i]    *(a+i)

地址:  &a[i]     a+i


指针的赋值

int *p1,*p2,a=2,b=3;

p1=&a;//p1指向a

p2=&b;

p1=p2//将p1亦指向p2的指向(即b)

*p1=*p2//将p1指向的a赋值为p2指向的b(即a=b)


int p1=3,*p2,a=2;

扫描二维码关注公众号,回复: 10305600 查看本文章

p2=&a;

p1=*p2;//p1=p2指向的内容的值,即a,即2;

*p2=p1;//p2指向的内容的值赋为p1,即a=p1;





用指针进行数组的输入输出

输入一:

int *p,i,a[10];

p=a;

for(i=0;i<10;i++)

scanf("%d",p++);//p=a,p表示的是a[0]的地址,即&a[0];*p表示的是a[0]


输入二:

int *p,a[10];

for(p=a;p<(a+10);p++)

scanf("%d",p);


输入三:

int a[10],i;

for(i=0;i<10;i++)

scanf("%d",a+i);


输出一:

p=a;

for(i=0;i<10;i++)

pritnf("%d",*p++);//*p++即*(p++)


输出二:

for(p=a;p<(a+10);p++)

scanf("%d",*p);


输出三:

for(i=0;i<10;i++)

scanf("%d",*(a+i));


若想输出a数组的前100个数,可以用指针的方式提高速度

法一:

p=a;

while(p<a+100)

printf("%d ",p++);

法二:

p=a;

while(p<a+100)

{printf("%d ",*p);p++;}





若进行了p++,再用时需要初始化一下,如下:

int *p,i,a[10];

p=a;

for(i=0;i<10;i++)

scanf("%d",p++);

for(i=0;i<10;i++)

printf("%d ",*p++);

则输出与输入的数并不一一对应,因为,scanf进行完后p已经指向了a[9],应

int *p,i,a[10];

p=a;

for(i=0;i<10;i++)

scanf("%d",p++);

p=a;

for(i=0;i<10;i++)

printf("%d ",*p++);


指针与++

p++;*p               a[1]

*(p++)与*p++        a[0],a[1]…...//*和++同优先级,结合方向为从右向左;先*p,再++

*(++p)   a[1],a[2]……//先++p,再*

++(*p)   元素a[0]的值++

--和++同理




written by Sneexy

发布了48 篇原创文章 · 获赞 21 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/qq_33810513/article/details/50705329