C函数传递二维数组
来源:互联网 发布:多张同样表格数据汇总 编辑:程序博客网 时间:2024/05/13 19:24
方法一:形参为int [ ][ N ]类型,实参也为int [ ][ N ]类型
#include <stdio.h>#include <stdlib.h>#define M 3#define N 4 int get(int a[][N], int i, int j)//一定要给出第二维的维数,否则编译器无法寻址{ return a[i][j]; } int main() { int a[M][N] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}; int v; v = get(a, 2, 1); printf("a[2][1] == %d\n", v ); return 0; }方法二:形参为int *类型,实参为int [ ][ N ]类型
#include <stdio.h>#include <stdlib.h>#define M 3#define N 4 int get(int* a, int i, int j){ return *(a+i*N+j); //注意:此处不能再使用a[i][j];} int main() { int a[M][N] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}; int v; v = get( (int *)a, 2, 1); //需要将int [][N]类型的a强制类型转换为int *,否则编译报错 printf("a[2][1] == %d\n", v ); return 0; }
方法三:形参为int **类型,实参为int [ ][ N ]类型#include <stdio.h>#include <stdlib.h>#define M 3#define N 4 int get(int** a, int i, int j){ return *((int *)a+i*N+j); //需要将int **强制类型转化为int * } int main() { int a[M][N] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}; int v; v = get( (int **)a, 2, 1); //需要将int [][N]类型的a强制类型转换为int **,否则编译报错 printf("a[2][1] == %d\n", v ); return 0; }
注意:在方法三种这种写法是错误的:return *(*(a+i)+j) ;不要误以为对int **类型的a+i后,会跳跃寻址,二维数组在内存中就是和一位数组一样连续存放的。编译器并没有为对int **类型提供特殊的运算支持。
0 0
- C函数传递二维数组
- C/C++函数如何传递二维数组
- C语言函数二维数组传递方法
- C语言:函数二维数组传递方法
- C语言函数二维数组传递方法
- 函数传递二维数组
- 二维数组 函数传递
- c语言中函数二维数组传递方法小结
- c 语言 二维数组的函数参数传递的问题
- C语言函数传递二维数组的方法
- 二维数组作为函数参数传递剖析(C语言)
- C/C++二维数组作为函数参数传递
- C语言二维数组作为函数参数传递
- 二维数组作为函数参数传递剖析(C语言)
- 二维数组作为函数参数传递剖析(C语言)总结
- 二维数组作为函数参数传递(C++)
- C语言二维数组作为函数参数传递
- c语言中函数二维数组传递方法小结
- 堆和栈的区别?
- YARN工作流程
- java转换中文汉字 ChineseEncoding
- andorid出现OOM的解决办法
- ListView优化
- C函数传递二维数组
- WebForm知识点总结
- Linux下利用backtrace追踪函数调用堆栈以及定位段错误
- LeetCode || Sort List
- mysql简单的使用
- 《统计自然语言处理基础》笔记(4)词性标注 之 作用和影响性能的主要因素
- java中怎么设置文件权限
-
- PowerDesigner15反向工程生成ER图