C语言基础:数组和字符串
数组:数组的定义注意点
数组初始化正确写法:
int args[5] = {1,23,32,4,5};
int args[5] = {12,23};
int args[5] = {[3]=23, [4]=13};//这种写法也可以,直接给其中角标为3和4的赋值
int args[] = {12,23,32};//中括号中没写数组大小,在大括号中一定要写具体数值
int args[‘A’] = {2,34,5};
错误写法:
int args[];//这样编译器不知道给你开辟多大的内存空间
int count = 5;
int args[count] = {12,23,4};//不能写变量在定义数组时;
数组名就是数组的地址:
int args[3] = {23,3,4};
printf(“%p\n”,args);//打印数组的地址,和第一个元素的地址一样
printf(“%p\n”,&args[0]);//打印数组中某个值得地址要加 &
由于数组名是地址,当把数组名参数传给函数,传递的是数组的地址;
字符串:c语言中字符串是用字符数组存储的,结束符:’\0’,这个结束标记很重要,用他作为一个字符串结束的标志;
对于没有\0结束符的只能说是字符数组
数组定义正确的:
char name[8] = “itcast”;
char name2[8] = {‘i’ , ’t’ , ‘\0’};//这样定义必须要用\0结束,
char name3[8] = {‘i’ , ’t’ , 0};//由于0的ASCII码值就是0,这样也是可以的;
char name4[8] = {‘i’ , ’t’ };//这个虽然没有\0作为结束,但是定义的大小是8个,而只用了两个,后边的会默认补上0的
但是下面这个就只能叫字符数组了:
char name[] = {‘i’ , ’t’ };没有定义字符数组的大小,默认按照给定的字符个数作为数组的大小,所以这个数组只有2个字符
字符串输出的占位符:%s,右边接收的变量是一个地址,或者叫数组名
c语言自带的计算字符串的长度的函数:strlen,这个函数包含在<stdio.h>头文件中;
注意点:这个字符串计算长度不计\0,而是以\0作为结束符;