char **, char *a[] ,char (*a)[] 思考
来源:互联网 发布:淘宝账户体检中心 编辑:程序博客网 时间:2024/05/08 05:42
1.指向数组的指针
int (*a)[ 10] ;
(*a) 代表的是一个指针, 接着[] 下标的引用,解释了a指向int类型的数组。
int matix[3][10];
初始化: int (*a)[10] =matix;
它使得a 指向 matiix的第一行
如果需要一个指针逐个访问整形元素而不是逐行在数组中移动
int *p = &matix[0][0];
int *p = matrix[0];
- 增加这个指针使得它指向下一个元素。
- 错误: int (*a)[] = matrix;
- 这样数组长度不见了,当某个整数与这种类型的指针执行指针运算时,它的值将根据数组的长度调整。
作为函数参数
多维数组的每个元素本身是两外一个数组,编译器需要知道它的维度,以便为函数形参的下标进行求值。
所以函数参数声明:
void fun(int (*mat)[10]);
void fun(int mat[][10]);
第一个下标会根据包含10个元素的整形数组的长度进行调整。
接下的下标编译器必须各维的维度才能对个下标进行求值。
二维数组内存分布(实际上应该是线性的)
2指针数组(向量):
int *a[10];
因为[]优先级高于*
char * keyword[]={
"Rose",
"Tom",
"Alice",
"Brown",
"Strong",
NULL
}
#define N (sizeof(keyword)/ sizeof(keyword[0]))
//sizeof(keyword)是整个数组所占用的字节数
char **a 和 char *a[] 在函数形参中可以互换
void func ( char **a);
void func (char *a[]);
因为传递给函数的参数的一份拷贝, 拷贝的是数组的a[0]地址,也就是一个指针的指针。
3.指针和数组混用
1.作为表达式中的数组名 就是指针
2.c语言把数组下标作为指针的偏移量
3.作为函数参数的数组名等同于指针
0 0
- char **, char *a[] ,char (*a)[] 思考
- 深入char * ,char ** ,char a[ ] ,char *a[]
- char *,char **,char a[ ],char *a[]
- 深入 char * ,char ** ,char a[ ] ,char *a[]
- 深入char*,char**,char a[],char *a[]
- char * a, char ** a, char * a[], char a[][], char * a[][], char ** a[][], char * a [][][],
- char * a, char ** a, char * a[], char a[][], char * a[][], char ** a[][], char * a [][][]
- char * a, char ** a, char * a[], char a[][], char * a[][], char ** a[][], char * a [][][],
- char * a, char ** a, char * a[], char a[][], char * a[][], char ** a[][], char * a [][][]学习
- char * a, char ** a, char * a[] 区别
- char **a
- char *a[ ]
- char a[ ][ ]
- char a[]和char* a
- char a[] 和 char *a
- char a[]与 char *a
- char a[] 和char *a
- char *a和 char a[]
- 直接插入排序
- 【OJ】---L---对象数组输入与输出
- 关于递归
- conn.setAutoCommit()用法及作用(转发)
- 硬件工程师 基础知识 架构
- char **, char *a[] ,char (*a)[] 思考
- 神器与经典--sp_helpIndex
- opencv-访问Mat
- ARM 指令
- android下编摄像头的hal下代码时的错误error: call to '__property_get_too_small_error' declared with attribute error
- C/C++面试题精选
- SEL的使用
- What is the difference between << and += while injecting elements to Hash.new([])?
- 并查集