C语言基础 入门学习(四)

数组,字符数组,字符串

1.数组名有两种情况代表整个数组
①sizeof(arr) 求整个数组字节的大小
②&arr+1 整个数组最后一个元素的下一个地址
2.访问数组元素的方法
①通过下标访问

int arr[5] = {1,2,3,4};
int a;
int b;
a = arr[0];
b = arr[1];

②通过指针访问

int arr[5] = {1,2,3,4};
int *p=arr;//
//     *(p+3)是指arr[3], *p+3相当于 *p=1,,1+3=4   因此打印*p+3时为4

3.字符数组
未初始化的字符型数组默认*‘\0’*,整形数组默认为0,指针型数组默认为NULL
‘\0’为字符数组的结束标志
①区分 0x00 , 0 , ‘0’, ‘\0’

char ch1=0x00;//打印值为0
char ch2=0;//打印值为0
char ch3='0';//打印值为ASC||码值   48
char ch4='\0';//打印值为0

数组的整体赋值只有一次机会初始化

char crr1[5]={'a','b','c','d'};//
char crr2[5]="abcd";//
char crr3[]="abcdef";//

4.字符串
字符串被定义初始化后 ,之后不能被修改

char *str = "tulun";
//*(str+1)='g';//erorr
printf("%s",str);

原因是因为字符串被分配在 rodata段, rodata段只能读取数据,不能修改;
%s可以打印字符串是因为字符串有‘\0’,%s遇到0之后停止。
5.其他
strlen 计算字符串长度的一个库函数,使用时要加头文件string.h 计算字符串长度不包括‘\0’

char str1[100]="abcdef";//   字节数     100           字符串长度     6
char *str2="abcdef";//字节数     4            字符串长度       6
char str3[]="abcdef";//字节数     7           字符串长度      6
char str[100]="abcdef\0xyz";//字节数       100          字符串长度       6
char *str5="abcdef\0xyz";//字节数         4        字符串长度           6
char str6[]="abcdef\0xyz";//字节数      11          字符串长度        6
char str7[]="abcdef\n\0";//字节数   9             字符串长度         7
char *str8="abcdef\n\0";//字节数       4         字符串长度         7

猜你喜欢

转载自blog.csdn.net/zhangfei5354/article/details/83187624