指针(小破站-王道训练营P18的例题)

#include <stdio.h>

void pointer_self_add(){

int arr[3] = {2,7,8};

int *p;

int j;

p = arr;


 

/*注解:原arr[] = {2,7,8};

原*p = 2; *(p+1) = 7; *(p+2) = 8;

*/

for (int i = 0; i < 3; i++)

{

printf("%3d",arr[i]);

}

for (int i = 0; i < 3; i++)

{

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

}

printf("\n");

printf("\n");

 

/*

注解:1.j = *p = 2;

2.*p++ *p = *(p+1)

3.*p++ 意味着整个p[]向左移动一个单位

*/

j = *p++;// ==*(p++)

//j = *p++;

printf("a[0] = %d , j = %d , *p = %d\n",arr[0],j,*p);

for (int i = 0; i < 3; i++)

{

printf("%3d",arr[i]);

}

for (int i = 0; i < 3; i++)

{

printf("%3d",p[i]);

}

printf("\n");

printf("\n");





 

j = p[0]++;

printf("a[1] = %d , j = %d , *p = %d\n",arr[1],j,*p);

for (int i = 0; i < 3; i++)

{

printf("%3d",arr[i]);

}

for (int i = 0; i < 3; i++)

{

printf("%3d",p[i]);

}

printf("\n");

 

}

int main(){

//pointer_self_add();

double num = 9/4;

printf("%f\n",num);

printf("%d",9/4);

}

 

//总结:*p原本是指向arr[0]的指针,当进行*p++(或者*(p++))的操作时,*p = *(p+1)

//因此*p就开始指向arr[1],*(p+1)就指向arr[2],*p[3]就指向空(0)

//注意:从*p++进行之后*p就不再等于arr

//在进行第二步操作时,p[0]++,这意味着p[0](即*p)指向的arr[1]自增(p[0]++ = arr[1]++)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值