一、C语言数组使用,存放规则等
1、如:数组int ages[];是一种错误的写法。
1> 如果想再定义数组的同时进行初始化,数组元素个数必须是常量,或者不写。
int a = 5; int ages[a]={1,3,5}; 也是错误的, [] 里面只能放常量。
2> int a = 5; int ages[a]; 是正确的。因为没有进行初始化。
2、 .想计算某个数组长度,可以用 int count = sizeof(ages) / sizeof(int)。
3、 数组在内存中存放规则:
1> 数组分配内存是按照内存地址由小到大依次给数组分配内存空间。
比如 char cs [ 5 ] = { 'a', ' b ', ' c ', ' d ', ' e ' };
那么首先CS会占用内存中后面的5个字节。如ffc9-ffc5,之后的每个存储空间会从上到下依次存储,比如
ffc5存储a; ffc6 存储b; 依此类推。
2> 数组名就代表数组的首地址。
Printf("%s",name)和Printf("%s",&name)这两个是一样的,因为name是一个数组,所以name传的就是数组的首地址。
3> 数组作为函数参数,可以省略元素个数。
4> 数组作为函数参数,传递的是整个数组的地址,修改函数的形参数组元素的值,是会影响到外面的实参地址的。
4、 如:int ages[5] = {[3]=10,[4]=11};
该语句表述定义初始化该数组,并给ages[3]赋值为10,ages[4]赋值为11。
二、C语言字符串
1、当字符串末尾结束时,是以'\0'结尾的,该字符的ASCII值为0.
如: char name[8] = 'it';
char name2[8] = {'i','t','\0'};
char name3[8] = {'i','t',0};
这三种字符串形式在内存中表现形式是一样的。
2、strlen()函数
1> 该函数strlen()所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置, 甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值。
2>使用时,需要头文件 #include<st ring.h>;
3> 计算的字符数不包括'\0'.(一个汉字算作三个字符 )。
3、遍历字符串:4种方式
1> while(str[i] != '\0') i++;
2> while(str[i]) i++;
3> int i = -1;
while(str[++i]){ if() return 1; };
4> int i = -1;//查找字符串中是否含有C,如果有返回1,没有返回0;
while (str [++i] != c&&str[i]!='\0');
return str[i] == '0'?0:1;