6 数组
6.1数组初始化
int a[100] ={ [19]=20,[10]=100,[58]=15}
C99中的变长数组:
int n;
scanf(“%d”, &n);
int a[n];// -std =C99
6.2 数组与地址
若有int a[20];则存在的等价关系为:
-
a
&a
&a[i]
a+i
a[i]
*(a+i)
#include<stdio.h>
int main()
{
int a[20]={0};
printf("a\t= %p\n&a\t= %p\n&a[2]\t= %p\na+2\t= %p\na[2]\t= %d\n",a,&a,&a[2],a+2,a[2]);
return 0;
}
6.3数组与字符串
char a[4]={'h','e','l','l'};
字符数组不一定是字符串,只有放了'\0'的字符数组才算是字符串
字符串字面量可以当成数组名使用 "csd1007"[2]
输出时遇到\0就停止 ,输入时遇到空白字符就停止,包括空格,换行,制表符
gets | 读取一行字符作为一个字符串 |
fget | 避免溢出 |
puts | 读取一行字符串,自带换行 |
7字符串函数
strcpy | 字符串复制,可当赋值 |
strncpy | 避免溢出 |
strcmp | 比较 前者大返回1,相同为0,后者大-1 |
strcat | 追加 |
strncat | 避免溢出 |
strlen | 计算字符串长度,包括空格,符号,不包括\0 |
strchr(a,'f') | 查找字符串中的某个字符,找到返回字符的地址,找不到返回 空,默认从左向右 |
strrchr | 从右向左 |
strstr(a,"ear") | 查找字符串 |
详细请查man函数