记录一些杂事(二维数组初始化、参数传递)
2012-06-03 21:09
302 查看
1. 向一个函数的参数传递二维数组的三种方法:
2. 二维数组的初始化:
#include <stdio.h> // // 第一种传递方式(指针方式):int (*x)[20] // 内部可以把x当成一个二维数组使用 // void Fn1(int (*x)[20]) { for (int i=0; i<10; i++) { for (int j=0; j<20; j++) { printf("%d ", x[i][j]); } printf("\n"); } } // // 第二种传递方式(数组方式):int x[][20] // 注意:形式参数的第一维允许为空 // void Fn2(int x[][20]) { for (int i=0; i<10; i++) { for (int j=0; j<20; j++) { printf("%d ", x[i][j]); } printf("\n"); } } // // 第三种传递方式(单指针方式):int x[10][20] // 内部x为当成一个一维数组使用,需要自己转换下标位置 // void Fn3(int **x) { for (int i=0; i<10; i++) { for (int j=0; j<20; j++) { printf("%d ", x[i*20+j]); } printf("\n"); } } void main() { //定义实参(实参就是实际的准备向函数中传递的实际变量) int xx[10][20]; //给实参附上初值 for (int i=0; i<10; i++) { for (int j=0; j<20; j++) { xx[i][j] = i+j; } } //调用1——直观简单 Fn1(xx); printf("\n"); //调用2——直观简单 Fn2(xx); printf("\n"); //调用3——需要强制类型转换 Fn3((int **)xx); }
2. 二维数组的初始化:
#include <stdio.h> void main() { // // 字符串1数组初始化 // 欲取得xx1个数(即下面的每周7天),使用:sizeof(xx1)/sizeof(xx1[0] // char xx1[][10]= { "MON", //!!注意不要忘记【逗号】,否则认为"MONTUE"为一个字符串,编译通过,无任何警告 "TUE", "WED", "THU", "FRI", "SAT", "SUN", //<---最后一个【逗号】,可有可无 }; //printf("%d\n", sizeof(xx1)/sizeof(xx1[0])); // // 字符串2指针数组初始化特殊——可以使用下面的方式 // 注意:维数可以为空 // char *xx2[]= { "MON", //!!注意不要忘记【逗号】,否则认为"MONTUE"为一个字符串,编译通过,无任何警告 "TUE", "WED", "THU", "FRI", "SAT", "SUN", //<---最后一个【逗号】,可有可无 }; // // 其他类型(这里用整型)的二维数组初始化 // int xx3[][3]= { {11, 22, 33}, {10, 20, 30}, {12, 22, 32}, {15, 25, 35}, }; printf("%d\n", sizeof(xx3)/sizeof(xx3[0])); // // 但其他类型(这里用整型)的指针数组初始化错误!! // /* int *xx4[]= { {11, 22, 33}, {10, 20, 30}, {12, 22, 32}, {15, 25, 35}, }; */ // // 但可以先“分开”定义,再使用分开定义的变量 // int x1[] = {11, 22, 33}; int x2[] = {15, 22, 33}; int x3[] = {14, 22, 33}; int *xx4[]= { x1, x2, x3, }; }
相关文章推荐
- c++ 二维动态数组初始化及作为参数传递
- 【错误记录】二维数组初始化,以二级指针传递函数参数
- hdu2426 km算法map数组初始化的一些注意事项
- C二维动态读取长度的数组初始化
- Array数组声明初始化的一些写法
- js之二维数组定义和初始化三种方法
- C初始化字符串指针和二维字符数组
- C语言中二维字符数组的定义和初始化
- 《c primer pius》第十章第6题,编写一个程序,初始化一个二维double数组,并利用练习2中的任一函数来把这个数组复制到另一个二维数组(因为二维数组是数组的数组,所以可以使用处理一维数组的
- 关于vector二维动态数组初始化
- 二维指针、指针数组、数组指针和sizeof的一些用法
- JAVA基础:二维数组初始化
- C/C++数组初始化的一些误区
- 指针和数组一致的情况及二维数组初始化
- Delphi 记录数组 的初始化
- 二维数组初始化问题
- C++中使用malloc(), free()定义初始化一维、二维、三维数组
- c二维数组初始化为0的2种实现方式
- 二维字符串数组的初始化-动态内存分配
- 不同语言的二维数组初始化