字符串(c语言):
以“abcd”为例,说明如下。
1 .申请了空间(常数区域),保存了字符串
2 .字符串末尾加上“/0”
3 .返回地址
一定记清楚!!
1 .字符串为char*intmain(intargc,const char *argv[] ) { char *p1='hello '; printf(P1[0]=%c(n ),*p1 ); printf(%s(n )、p1 ); char *p2=NULL; p2='world '; printf(P2[0]=%C(n ),*p2 ); printf(%s(n )、p2 ); 返回0; }
小结:以下两种形式赋值效果相同
char*p1='hello ';
与
char*p2=NULL;
p2='world ';
2 .字符串为数组1) 字符串赋值给定长数组
intmain(intargc,const char *argv[] () charP1(10 )='Hello '; printf('%s ',p1 ); 返回0; (/)结果输出: Hello*/intmain(intargc,const char *argv[] ) charP2(10 ); p2='hello '; 返回0; //src/demon.c : in function ' main ' :/src/demon.c 336046336083360 error : asignmenttoexpressionwork|^ . demon.c :453360103360 warning : variable ' p2 ' setbutnotused [-w unused-but-set-variable ] 45|^~*/33http://
charp1[10]='hello ';
与
charp2[10];
p2='hello ';
http://www.Sina.com/http://www.Sina.com /
小结:以下两种形式不同
intmain(intargc,const char *argv[] () charp ) )='Hello '; printf('%s ',p ); printf(sizeof(p ) p[]=%d ',) int (sizeof ) p ); 返回0; (/)结果输出:执行任务:.)传统枕头(demon.exehellosizeof(p[] )有6个终端用于任务,然后按任意键关闭。 */char str[]='hello '; 因为定义了字符数组,所以等于定义了存储“hello”的空间。 此外,由于字符数组逐个存储字符,编译器将此语句解析为char str[6]={'h '、' e '、' l '、' l '、' o '和' '
对于第二种形式的理解: