话不多说,直接上代码:
#include<stdio.h> int main(){ int suzu [10] ={10,11,12,13},i; int *p=suzu; //打印出所有的数据 for(i=0;i<10;i++) printf("%d\n",suzu[i]); //因为*的优先级高于+号 所以这个括号是必须要的 printf("\n"); //因为这个不是按照指针来读取的,所以我们会从默认第一位开始读取 for(i=0;i<10;i++) printf("suzu[%d] values is %d\n",i,suzu[i]); printf("\n"); //如果我们想要输出地址的话我们就需要在前面加上&地址符号 for(i=0;i<10;i++) printf("suzu[%d] values is %d\n",i,&suzu[i]); printf("\n"); //同样可以看出我们在前面无限的加上*&其实对取值是没有影响的 for(i=0;i<10;i++) printf("suzu[%d] values is %d\n",i,*&*&suzu[i]); //但是我们输入的东西不能超出索引范围,否则产生未知的数据 printf("\n"); printf("%d\n",*(p+3)); printf("%d\n",*(p+11)); //++ 的区别 printf("\n"); printf("%d\n",p); *p++; //指针实际上向前移动了一位 printf("%d\n",p); ++*p; //对指针移动到的第一位执行++操作 printf("%d\n",p); ++(*p); //对指针移动到的第一位执行++操作 printf("%d\n",p); *p=*p+1; //对指针移动到的第一位执行++操作 printf("%d\n",p); //11+3 //这两种写法其实没有本质上的区别 for(i=0;i<10;i++) printf("a[%d] values is %d\n",i,*(p+i)); printf("\n"); for(i=0;i<10;i++) printf("a[%d] values is %d\n",i,*(suzu+i)); return 0; }
总结:一般来说
*p++; //会对指针所指向的内存地址产生影响
其余的几种写法会对指针当前所指向的内存地址中存储的值产生影响
减号也是同理
原文地址:https://www.cnblogs.com/gddcz/p/11594413.html
时间: 2024-10-02 04:49:56