1. 一维数组
- 数组名称可以作为数组的首地址使用,a = &a[0]。a可以直接赋值给指针变量,如 int* p = a(或写成 p = &a[0]),即把数组a[10]的首地址赋给p
#include<stdio.h>
void print(int b[],int len)
{
int i;
for (i = 0; i < len; i++)
{
printf("a[%d] = %d\n", i, b[i]);
}
b[4] = 20;
}
int main()
{
int a[10] = { 1,2,3,4,5 };
print(a, 5);
printf("a[4] = %d\n", a[4]);
}
2. 字符数组(字符串)
- %c 是输入单个字符,%s是输入一个字符串到字符数组里
- %c可以识别空格和换行符并将其输入,%s通过空格或换行识别一个字符串的结束
- 字符数组(字符串)名称本身就代表这个数组的第一个元素的地址,所以在scanf中不需要加取地址运算符
- 字符数组是由若干个char类型的元素组成,所以字符数组的每一位都是char型的字符。数组末尾都会有一个空字符\0,表示存放的字符串的结尾
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
char c[6] = { 'h','e','l','l','o' };
char d[5] = "how";
printf("%s---%s\n", c, d);
char e[20],f[20];
scanf("%s%s", e, f);
printf("%s---%s\n", e, f);
}
3. 字符数组的传递
- %c可以识别空格和换行符并将其输入,%s通过空格或换行识别一个字符串的结束
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void print(char d[])
{
int i = 0;
while (d[i] != '\0')
{
printf("%c\n", d[i]);
i++;
}
printf("\n");
d[0] = d[0] - 32;
}
int main()
{
char c[10] = "hello";
print(c);
printf("%s\n", c);
return 0;
}
4. gets与puts
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
char c[20];
fgets(c,sizeof(c),stdin);
gets(c);
puts(c);
return 0;
}
5. string函数使用
- strlen():得到字符数组中第1个\0之前的字符的个数
- strcmp():返回两个字符串大小的比较结果,比较原则是按字典序,越靠后值越大
- strcpy():把一个字符串赋值给另一个字符串
- strcat():把一个字符串接到另一个字符串后面
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int main()
{
char c[20] = "wangdao";
printf("数组c内字符串的长度=%d\n", strlen(c));
char d[20];
strcpy(d,"study");
puts(d);
printf("两个字符串比较后的结果=%d\n", strcmp("hello", "world"));
strcat(c, d);
puts(c);
return 0;
}