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

值:     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;

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值