1.c语言不允许对数组进行动态定义。int a[k];这样是错的,但是可以用#define 进行宏定义 #define 4 k
2. 可以给一部分元素进行赋值,例如,int a[10] = {0,1,2,3};这样是表示给前四个元素赋值,后面的数值自动给0;
3.int a[3][4];是三行四列;
4. 二维数组也可以只对部分元素赋值。int a[3][4] = {{1},{1,2},{1,9}};;这样等价于inta[3][4] = {{1,0,0,0},{1,2,0,0},{1,9,0,0}};表示行数的3 是可以省略不写的;
5.当数组作为参数传递给函数时 ,方法一:将数组名和数组大小一起传递,例如char a1[num],a2[num]; memcpy(a1,a2,num);//memcpy是调用函数
方法二:因为字符串遇到\0结束,例如:void memcpy(char *str[])
{
xxx;
while(str[i] != NULL)
puts(str[i]);
}
6.对字符数组初始化 char str[10] = {'a','d');
输出 puts(str);或for(i = 0;i < length;i++) printf("%c",str[i]);
对字符串初始化char str = "china";或char str = {"china"};
输出printf(:%s",str);或puts(str);或for(i = 0;i < length;i++) printf("%c",str[i]);
%s是输出整个字符,注意是字符数组不是数字数组,输出项是字符数组名,而不是数组元素名;
7 .puts(a)输出字符数组到终端,可以输出转义字符;char str[] = {"china\nbeijing"};puts(str); 这样输出是china
beijing
8.gets(字符数组);相当于scanf;
9.strcat ,连接两个字符数组,结果放在第一个数组;
strcpy复制,字符数组间不能直接用赋值语句。不能直接将一个字符数组给另一个字符数组;但可以将一个字符付给一个字符数组 str[0] = 'c';
strcmp 比较。如果字符1>字符2,返回一个正数;
strlen 测试一个字符的长度,不包括\0. char str[10];printf("%d",strlen(str));
strchr 函数返回指向第一次使用指定字符的指针,如果没有找到这个指定字符,则返回NULL;意思是这个指定字符前是NULL这个字符串结束后也是NULL
10. 局部变量只能付一次值,下一次调用该函数可以使用上一次调用的结果。
11. 输入输出一维数组时for(i = 0;i < 7;I++) scanf("%D",&a[i]); scanf 遇到tab 空格,回车都算一个(循环)结束;