|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
比如 定义一个 数组 int array[3]={1,2,3}
然后定义个 指针 int *p=array;
然后打印 指针的值
printf("%d',p[-1]);
可以正常编译,然后出来一个地址一样的东西.
所以指针的下标就是当前位置前移/后移多少个和指针类型相同的数据喽?负数就是前移,正数就是后移?
C语言数组下标从0开始,没有负数。
下标加一,指针小侯移动一个该类型的宽度,指向下一个地址。
但是也没有规定下标为负数就出错。
你可以看看下标为负数和下标为正数时候的地址差异,可以看出来,下标为负数的时候地址的确是向前移动的。
这样的话,你写这个下标为-1,然后打印该值,打印出来的就是该地址的内容,但是该内容有什么意义呢?这不是你定义的变量,只是内存中的某一个单元的值。
- #include<stdio.h>
- int main(){
- int a[3]={1,2,3},b[4]={4,5,6,7},c[2]={8,9};
- int*p=b;
- for (int i=-4;i<6;i++)
- printf("地址%p的值是%d\n",&p[i],p[i]);
- return 0;
- }
复制代码
|
|