c语言中的数组和面向对象语言中的数组一样,为了存储多个同类型的值,定义数组的时候,系统将按照数组的类型和个数分配一段连续的存储空间来存储数组元素。数组名代表着数组的地址也就是第一个元素的地址,所以数组名是一个常量如果把数组作为函数实参,传递的是整个数组,形参数组和实参数组完全等同,因为传递的数组地址,形参修改,实参也会修改,因为C中字符串和数组有着特殊的关系所以就把数组和字符串放在一篇博客了。
二维数组初始化的时候可以省略行数二维数组按行存储,必须知道一行有多少列,不可省略列数,因为列数省略会产生多种情况
int a[][3]={1,2,3,4,5}; //每行三列 //a[0][0] a[0][1] a[0][2] //a[1][0] a[1][1] |
字符串数组
char stus[2][5]={"jack","tom"}; char stus[2][5]={{'j','a','c','k','\0'},{'t','o','m','\0'}}; |
字符串:C语言是用字符数组存储字符串,在字符串尾部会添加一个’\0’代表结束标记,如果尾部没用’\0’,那么这个数组就是一个普通的字符数组;
char str[]={'i','o','s','\0'};//是字符串,如果忘记'\0',很容易造成内存溢出 char str2[]={'c','t','o'}; //不是字符串是字符数组 char str3="cto";//自动再数组尾部后面加'\0',数组元素应该有4个 printf("%s字符串%s");//可以输出多个字符串,比较灵活 |
字符串与函数,c语言也像Java一样为字符串提供了一些简单的函数,只是没有Java的丰富而已,字符串函数在头文件(#include <string.h>)中
字符串输入
gets(s); //可以读取空格和tab而scanf函数不可以 //scanf("%s",s); 输入完毕后会在数组s后面加一个结束符'\0' |
接收用户从键盘输入的字符
char ss; ss=getchar();
|
添加字符
char ss=putchar('5'); |
字符长度
int s=strlen("ss"); //不包括’\0’的长度 |
strcpy
char s1[10]; strcpy(s1, "ios"); //从ios开始拷贝直到遇到\0 |
//从第一个字符开始比较ascll码直到不相等或者遇到\0,如果相等返回0,如果不等,负数右边大,正数左边大(左边-右边)
strcmp("abc", "ABC"); |
大小写转换
srwr(“ABC”);//转换成小写 struper(“转换成大写”); |