#include
//打印数组里每一个元素,数组传递时,元素个数传递不过去
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 };
//a[10] = 1;//访问越界,访问了不属于自己的空间
print(a, 5);
printf("a[4] = %d\n", a[4]);
}
#define _CRT_SECURE_NO_WARNINGS
#include
//初始化字符数组时,一定要让字符数组的大小比看到的字符串的长度多1
int main()
{
char c[6] = { 'h','e','l','l','o' };//填5就是错了,因为加了一个\0的位置
char d[5] = "how";
printf("%s---%s\n", c, d);//printf的%s,对应后面要写的字符数组名,字符串常量
char e[20],f[20];
scanf("%s%s", e, f);//字符串数组前不用加取地址符&,scanf读取字符串
printf("%s---%s\n", e, f);
}
#define _CRT_SECURE_NO_WARNINGS
#include
void print(char d[])//我们把d称为形参,c称为实参
{
int i = 0;
while (d[i] != '\0')//%c格式对应的是单个字符,%s格式对应的是字符串,char a与char a[10]的区别
{
printf("%c\n", d[i]);//字符数组去输出某一个元素时,用%c
i++;
}
printf("\n");
//修改字符串数组中的字符串的内容,把首字母变成大写
d[0] = d[0] - 32;
}
int main()
{
char c[10] = "hello";//字符串最后有\0,需要占据一个位置
print(c);//调用函数print,使d=c
printf("%s\n", c);
return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include
int main()
{
char c[20];//字符数组的数组名里存的就是字符数组的起始地址,类型是字符指针
//不能使用gets的VS,VS2017请使用下面操作
fgets(c,sizeof(c),stdin);//与gets(c)是一样的
//c是一个字符数组,但编译器给c内部存了一个值,c里面值的类型是字符指针。
gets(c);//gets只能读取字符串,当一次读取一行时,使用gets
puts(c);//等价于printf("%s\n",c);
return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include
#include
//strlen统计字符串的长度
//strcpy将某个字符串复制到字符数组中
//strcmp用于比较两个字符串的大小
//strcat用于将两个字符串连接在一起
//char* strcpy(char* to,const char* from);有const修饰代表这个地方可以放字符串常量
int main()
{
char c[20] = "wangdao";
printf("数组c内字符串的长度=%d\n", strlen(c));//strlen是整型,不算'\0'结果是7
char d[20];
//strcpy(d, c);字符数组里就是wangdao
strcpy(d,"study");//d中放字符串常量study
puts(d);
//下面是看strcmp,两个字符串比较,是比较对应字符串位置的ASCII值
printf("两个字符串比较后的结果=%d\n", strcmp("hello", "world"));//返回的是-1
//下面是看strcat,拼接字符串,目标数组要能够容纳拼接后的字符串(7+5<20)
strcat(c, d);
puts(c);
return 0;
}