今天用到了C語言二維數組作為參數傳遞的程序,通過網上搜索,針對自己遇到的問題做個整理。
1、在被調用函數的形參數組定義可以省略第一維的大小,第二維不可省略,如下:
void fun(int a[5][20]); //合法
void fun(int a[][20]); //合法
void fun(int a[5][]); //不合法
void fun(int a[][]); //不合法
將二維數組作為形參時,第一維大小可以省略,第二維不可省略,這是有編譯器原理限制的,在內存中按數組排列規則存放(按行存放),而並不區分行和列,如果在形參中不說明列數,則系統無法決定應為多少行多少列。
2、實參數組維數可以大於形參數組維數,如:
void fun(int a[5][20]);//形參為a[5][20]
int a[10][20]; //定義實參數組
這時形參數組只去實參數組的一部分數據。
3、字符串二維數組賦值
3.1、初始化賦值
void fun(char a[][20])
{
//實現函數功能
}
void main()
{
char str[][20]={"123","456","789"};
fun(str);
}
3.2、采用strcpy函數,需要#include<string.h>
void fun(char a[][20])
{
//實現函數功能
}
void main()
{
char str[3][20];
strcpy(str[0],"123");//或者用sprintf(str[0],"123");
strcpy(str[1],"456");//或者用sprintf(str[1],"456");
strcpy(str[2],"789");//或者用sprintf(str[2],"789");
fun(str);
}
C++ 隱式類類型轉化 Implicit Class-Type Conversions http://www.linuxidc.com/Linux/2013-01/78071.htm
C語言變長數組之剖析 http://www.linuxidc.com/Linux/2013-07/86997.htm
C語言需要注意的問題 http://www.linuxidc.com/Linux/2013-05/84301.htm
C語言位域的使用及其注意點 http://www.linuxidc.com/Linux/2013-07/87027.htm
C語言中簡單的for循環和浮點型變量 http://www.linuxidc.com/Linux/2013-08/88514.htm