多维数组和多维指针(数组参数和指针参数)
2018-03-20 12:28
183 查看
二维数组与二级指针
二维数组在内存中以一维数组的方式排布int m[2][3] m的类型为int(*)[3]
c语言中数组参数会退化为指针
数组参数 – 等效的指针参数
float a[5] – float* a
int* a[5] — int** a
char a[3][5] — char (*a)[5]
多维数组参数必须提供除第一维之外的所有维长度,
对于多维数组的函数参数只有第一维是可变的
动态地申请二维数组
#include <stdio.h> #include <malloc.h> int** malloc2d(int row, int col) { int** ret = NULL; if( (row > 0) && (col > 0) ) { int* p = NULL; ret = (int**)malloc(row * sizeof(int*)); p = (int*)malloc(row * col * sizeof(int)); if( (ret != NULL) && (p != NULL) ) { int i = 0; for(i=0; i<row; i++) { ret[i] = p + i * col; } } else { free(ret); free(p); ret = NULL; } } return ret; } void free2d(int** p) { if( *p != NULL ) { free(*p); } free(p); } int main() { int** a = malloc2d(3, 3); int i = 0; int j = 0; for(i=0; i<3; i++) { for(j=0; j<3; j++) { printf("%d, ", a[i][j]); } printf("\n"); } free2d(a); return 0; }
相关文章推荐
- C++ 指针 多维数组传递参数
- 多维数组的指针做函数参数
- 【C 语言】指针 与 数组 ( 指针 | 数组 | 指针运算 | 数组访问方式 | 字符串 | 指针数组 | 数组指针 | 多维数组 | 多维指针 | 数组参数 | 函数指针 | 复杂指针解读)
- 指针作为函数参数(处理数组的四种方式)
- 结构体变量、结构指针变量、结构数组作为函数的参数应用实例分析
- C程序设计语言- 指针与数组-4.1----指针与地址、指针与函数参数、指针与数组、地址算术运算
- 多维数组元素的下标引用于指针访问
- 指针访问多维数组
- 图解数组指针与多维数组(附:为什么指针加一,地址不一定加一)
- [004]多维数组和指针
- C++ boost::bind 函数参数对数组、指针的支持不够好?欢迎指教
- [指针三]数组作为参数传递
- 指针初识6(指针与多维数组)
- 12.指针-数组-函数参数
- 深入理解C++中的指针和多维数组
- 多维数组和指针(二)
- c 数组和指针在函数参数中的转换
- 第十六周 项目二--用指针玩字符串(2.1.1数组名作形式参数,连接字符串str1和str2)
- [C++程序设计]用指向数组的指针作函数参数
- C++中多维数组传递参数