|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <stdio.h>
- int main()
- {
- int array[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
- int (*p)[10] = &array;
- printf("%d\n", *(*(p+1)-6));
- return 0;
- }
复制代码
指针 p 指向数组 array 的地址,p + 1 便是指向整个数组最后的位置(第二个 array 数组的起始位置),于是 *(p+1) 即下一个数组 array 数组的起始位置,即 &array[11],所以 *(*(p+1)-6) == array[11 - 6] = array[5]。这一段是小甲鱼说的话。
我的问题;
问题一:第二个array数组的起始位置是什么,是再一次循环回来了吗,还是有一次起了一个数组,那这个第二个数组怎么出来的呢?
问题二:*(p+1)是取值啊,是应该第二个数组的第一个元素的的值啊,怎么就等于了11?
问题三:
- int temp[5] = {1,2,3,4,5};
- int (*p2)[5] = &temp;
- int i;
- for (i=0;i<5;i++)
- {
- printf("%d\n",*(p2+i));
- }
复制代码
如果按照这个想法去想这个代码的话,那就不能打印出来1,2,3,4,5 了啊,因为*(p2+i)当i=1是就到了第二个数组了。求解,谢谢。
简单的
*号前面有数据类型 后面的就是指针
例:int* a;double* b;
*号的前面有数据类型,a和b就是指针变量,没有初始化的指针变量;
int intNum=51;//定义一个整型变量
a=&intNum;//指针变量a 保存整型变量intNum的地址 就是a这个指针指向了intNum;
*a=666;//这里的*a 就是对intNum的赋值;
int a = 123;
int *pa = &a和pa = &a又有什么区别呢<<--int8pa=&a定义的时候初始化,相当于int a=123;这个 pa=&a;就是int a;然后a=123;这样
*pa 表示指针变量还是pa表示指针呢,<<-(两个都是指针变量,前者就是定义出来,后者已经定义好了);
pa = &a是把a的地址赋给指针变量,<<--对的; 蒙了呀,求解,谢谢。
|
|