C语言的int (*a)[10]等指针问题理解
来源:互联网 发布:淘宝官方客服电话400 编辑:程序博客网 时间:2024/04/30 04:47
C语言里面的指针确实有些难理解,我感觉用文字很难说清楚,直接用代码解释更清楚明白!
编译环境:win7 64位,Dev-C++(MinGW 32位C编译器,使用C89 C90的标准)
//函数指针int (*a)(int);//函数指针数组int (*b[10])(int);//函数指针,返回int指针int *(*c)(int);void main(){int i; int * a1[10]; int *(*a2)[10] = &a1; //a2的理解其实和a6一样,只不过最终的元素类型不一样,为了操作方便,还是主要测试a6int **b1[10]; int ***b2 = b1;//b1 b2的区别是++等 int a3[10]; int *a4 = a3;//a3 a4的区别就是指针操作,比如++的结果可能不一样 int **a5 = &a4; int (*a6)[10] = &a3;//a5 a6的区别 也是指针操作不一样 //难理解的是s6,分析s6很简单,但是怎么操作呢,请看后面的打印 char *s1[10] = { "abc", "def" }; char **s2 = { "abc", "def" };//这样定义编译不会报错,但是怎么操作s2呢?for (i = 0; i < 10; ++i){ a3[i] = i; //a6肯定是一个数组,既然是数组,一定可以用数组的操作方式([])操作 //a6[i] = a3 + 1; 编译不过 } printf("%d\n", *(a6[0]));//printf("%d\n", **a6);//printf("%d\n", a3[5]);printf("%d\n", *(a6[5]));// 输出的随机数,错误printf("%d\n", (*a6)[5]);// 输出的是5,正确//从打印结果可以看到,a6其实就是a3的一个指针(a3本身也是一个指针),不信看下面的测试(*a6)[6] = 888;printf("%d\n", a3[6]);//输出888//我不知道还有没有a6的其他独有操作方法,如果没有我觉得就完全没必要写a6这种代码printf("*(a3 + 6) ---- %d\n", *(a3 + 6));// 输出888,正常,a3+1最终值 = a3 + sizeof(int)/机器位数printf("*((*a6) + 6) ---- %d\n", *((*a6) + 6));//意料之中,输出888printf("*(a6 + 6) ---- %d\n", *(a6 + 6);// 随机数 printf("**(a6 + 6) ---- %d\n", **(a6 + 6));// 0 不懂意义printf("%s\n", s1[0]);printf("%s\n", *s2);//这里会运行错误printf("%s\n", s2[0]);//这里会运行错误 }
0 0
- C语言的int (*a)[10]等指针问题理解
- C语言 int** 二重指针的理解
- 初学 c语言 关于指针------什么是指针 int *a 与 *a的区别
- 深入理解C语言指针的奥秘A
- 指针问题:C语言中 int*p[4] 和 int(*p)[4]的区别 等等
- 关于C语言等程序中指针相关的问题
- (int&)a和(int)a的区别 - c语言
- 理解c语言的指针
- c语言指针的理解
- C语言数组,指针,函数等问题
- C语言 int &a
- C语言拾遗:(int)a、&a、(int)&a、(int&)a的区别
- C语言,数组与指针:int (*)p[4]; int *q; int a[4]; int b[3][4];
- C语言涉及地址, 指针等符号的英语读法,有助于语法理解
- 【C语言】[sizeof+指针]-int a[2][3],sizeof(a)与sizeof(a[0])
- C语言指针 int *p[10] int (*p)[10] int *p(int) int (*p)(int) 区别与举例
- C语言的int, float,double相互转化(从本质上理解可能的问题)
- C\C++中int、double等数据类型范围的理解
- 什么是堆和栈,它们在哪儿?
- mybatis+spring Result Maps collection already contains value for com.cq.zys.dao.StudentMapper.BaseRe
- 从Service中启动一个Activity需要加Intent.FLAG_ACTIVITY_NEW_TASK
- Java 学生管理系统
- poj 3114 Countries in War
- C语言的int (*a)[10]等指针问题理解
- Linux USB 驱动开发实例(一) —— USB摄像头驱动实现源码分析
- 第八周项目3——顺序串算法
- HDU 5926 Mr. Frog's Game 【模拟】 (2016CCPC东北地区大学生程序设计竞赛)
- Jquery获取json数据
- 第八周项目4-字符串加密
- Python-数字千分位的处理
- Android快速开发系列 10个常用工具类
- javascript cloneNode()方法