字符数组
- char ‘\0’ 表示字符串的结束,结束符。
字符串四种输出方式
输出一:循环+%c
不同于整型数组的遍历,字符串的遍历一般需要两个条件:
- 不越界
- 结束符判断
for(i=0;i<10&&arr[i]!='\0';i++)
{
printf("%c",arr[i]);
}
好处:
1. 排除'\0'输出可能
2. 减少'\0'后无意义元素的输出。
2. 输出二:%s
printf("%s\n",arr);
//arr为地址常量不需要&取地址
这种方法有可能越界,只判断结束符,不判断数组长度。
3. 输出方法三与四: String.h
一些专门用于输出方法的头文件string.h
puts(arr);
//puts会自动在最后输出一个\n
putchar(arr[i]);
接收同理。
gets(str);
//可以以接收空格,以回车结束。
例:接收字符数组防越界
for(i=0;i<10;i++)
{
str[i]=getchar();
if(str[i]=='\n')
{
str[i]='\0';
break;
}
}
if(i==10)
{
str[i-1]='\0';
}
地址与指针
i=(i+1)%10(个数)
//让一个操作首尾连接
arr+n–>arrn*sizeof(数组的元素类型)
arr+n->&arr[I]
例如
for(i=0;i<10;i++)
{
scanf("%d",arr+i);
}
//取地址中的数据*
*(arr+n)==arr[n] 除定义情况,其他完全相等
*&(arr+n)=&arr[n]->arr+n=&arr[n]
int a=10;//p=&a;p是的地址,*p就是变量a
int *p=&a;//*p=a;(*p)++->a++
int *p;//指针变量未初始化,为野指针
int *p=0;
//null就是0型,0x0地址处不能访问,为空指针。