一维数组在前一篇博客
二维数组
二维数组定义的一般形式为:
类型说明符 数组名[常量表达式][常量表达式];
例如:
定义a为3×4(3行4列)的数组,b为5×10(5行10列)的数组。
如下:float a[3][4],b[5][10];
数据类型 :
数组名 [常量表达式1][常量表达式2]={ 初始化数据 };
4种方法对二维数组初始化:
1.分行给二维数组赋初值。
例如: int a[3][4]={{1,2,3,4},{5,6,7,8},
{9,10,11,12}};
2.可以将所有数据写在一个花括号内,按数组排列的顺序对各元素赋初值。
例如:
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
3.可以对部分元素赋初值。
例如: int a[3][4]={{1}, {5}, {9}};也可以对各行中的某一元素赋初值,如int a[3][4]={{1}, {0,6}, {0, 0, 0, 11}};
4.如果对全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。
例如:
int a[3][4]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};等价于:、int a[ ][4]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
字符数组
为了测定字符串的实际长度,C语言规定了一个“字符串结束标志”——‘\0’。
字符数组的输入输出可以有两种方法:
逐个字符输入输出。用格式符“%c”输入或输出一个字符。
将整个字符串一次输入或输出。用“%s”格式符,意思是对字符串的输入输出。
说明:
(1)用“%s”格式符输出字符串时,printf函数中的输出项是字符数组名,而不是数组元素名。
(2)如果数组长度大于字符串实际长度,也只输出到遇′\0′结束。
(3)输出字符不包括结束符′\0′。
(4)如果一个字符数组中包含一个以上′\0′,则遇第一个′\0′时输出就结束。
(5)可以用scanf函数输入一个字符串。
函数
C程序:
只包含一个主函数main()
也可以包含一个主函数和若干个其它函数(库函数和自定义函数)
函数类型 函数名(形式参数类型说明表)
{
声明部分
执行部分
}
函数类型 函数名(形式参数类型说明表)
{
声明部分
执行部分
}
如:
printf(“Hello,World!\n”);
max(10,20);
函数调用的形式:
(1)作为函数语句调用。函数一般无返回值。例:
printf(“Hello,World!\n”);
(2)作为函数表达式调用。例:
m=max(a,b)*2;
(3)作为函数参数调用。例:
printf(“%d”,max(a,b));
m=max(a,max(b,c));
形参与实参
形式参数:定义函数时函数名后面括号中的变量名
实际参数:调用函数时函数名后面括号中的表达式
例 比较两个数并输出大者
值传递方式方式:
函数调用时,为形参分配单元,并将实参的值复制到形参中;
调用结束,形参单元被释放,实参单元仍保留并维持原值;
特点:
形参与实参占用不同的内存单元; 单向传递
地址传递方式:
函数调用时,将数据的存储地址作为参数传递给形参
特点:
形参与实参占用同样的存储单元;
“双向”传递;
实参和形参必须是地址常量或变量;