将字符串分配给指针

时间:2013-04-19 12:34:45

标签: c

根据定义,在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的地址为什么要打印整个字符串?

5 个答案:

答案 0 :(得分:5)

因为您使用%s,C会知道您要打印一个字符串,因此,它将逐个字符地打印到屏幕,直到它符合符号\0

答案 1 :(得分:3)

%s格式说明符指示printf将指向数据的数据视为由空(零)字节终止的字符数组。如果要打印指针地址,请使用%p

答案 2 :(得分:2)

printf格式字符串中,%s说明符假定相应的参数是指向字符数据的指针。这正是name的原因。

答案 3 :(得分:2)

C语言中的字符串用于确定0终止。

" David Bolton"

记忆图片:David Bolton \ 0 因此,可以在指向显示中找到地址区域中0位置的指南。

E.g。)

void print_string(char *string){
    while('\0'!=*string){
        putchar(*string++);
    }
}

答案 4 :(得分:1)

printf从给定的地址打印。因为%s用于打印字符串,所以它从name获取起始地址并打印直到达到\0。如果您执行printf("%p",name),它会为您提供存储在name即[{1}}中的地址。

请参阅this以了解指针和this数组