根据定义,在 C 中,字符串是字符数组
int main() {
char *name="David Bolton";
printf("My name is %s\r\n",name) ;
return 0;
}
该行将char * name="David Bolton";
name 定义为指向字符串中第一个字符的指针,即'D'。所以,指针名称应该包含地址,但它打印 'David Bolton' 为什么?原因是什么?既然它只包含 D 的地址,为什么它是打印整个字符串吗?
根据定义,在 C 中,字符串是字符数组
int main() {
char *name="David Bolton";
printf("My name is %s\r\n",name) ;
return 0;
}
该行将char * name="David Bolton";
name 定义为指向字符串中第一个字符的指针,即'D'。所以,指针名称应该包含地址,但它打印 'David Bolton' 为什么?原因是什么?既然它只包含 D 的地址,为什么它是打印整个字符串吗?
因为你使用%s
,C 会知道你要打印一个字符串,所以,它会一个字符一个字符地打印到屏幕上,直到遇到 symbol \0
。
%s
格式说明符指示将printf
指向的数据视为以空(零)字节终止的字符数组。%p
如果您想打印指针地址,请使用。
C语言中的String是用来判断一个0结尾的。
“大卫·博尔顿”
memory image : David Bolton\0 所以可以通过地址指向显示一个指向地址区域中 0 位置的指南。
例如)
void print_string(char *string){
while('\0'!=*string){
putchar(*string++);
}
}
在printf
格式字符串中,说明%s
符假定相应的参数是指向字符数据的指针。这正是name
。