C语言char数组初始化的方式不同,数组结尾\0也会不同
#include <stdio.h>
#include <string.h>
int main()
{
char str[]="aaab";
printf("%p是 \n", &str);
char sb[3] = {'x','y'};
printf("%p是 \n", &sb);
char *p;
p=sb;
printf("|%p|的长%p度是%c \n", p,&str,*p);
p++;
printf("|%p|的长%p度是%c \n", p,&str,*p);
p++;
printf("|%p|的长%p度是%c \n", p,&str,*p);
p++;
printf("|%p|的长%p度是%c \n", p,&str,*p);
printf("|%p|的长%p度是 \n", &sb,&str);
printf("|%p|的长%p度是 \n", &sb+1,&str);
printf("|%s|的长%s度是 \n", sb,str);
return 0;
}
运行结果
0x7fffffffeb93是
0x7fffffffeb90是
|0x7fffffffeb90|的长0x7fffffffeb93度是x
|0x7fffffffeb91|的长0x7fffffffeb93度是y
|0x7fffffffeb92|的长0x7fffffffeb93度是null
|0x7fffffffeb93|的长0x7fffffffeb93度是a
|0x7fffffffeb90|的长0x7fffffffeb93度是
|0x7fffffffeb93|的长0x7fffffffeb93度是
|xy|的长aaab度是
char sb[3] = {'x','y'};如果把3变成2,就没有‘\0’,那么最后一行会变成
|xyaaab|的长aaab度是