我想知道为什么我可以使用字符数组的名称,以便将整个字符串放在中间。我不能对 int 和 char* 等类型做同样的事情
int numbers[]={26,8,1995};
char name[]="Omar";
char* full_name[]={"Omar","Khaled"};
printf("%d",numbers); //random result i know its address of first element
printf("%s",full_name); //random resut i know it is pointer not string
printf("%c",name); //O .. ok
printf("%p",name); //adress .. ok
printf("%s",name) //Omar why ! name supposed to be pointer to first char O
最佳答案
为什么你可以使用 %s
来打印一个以 null 结尾的字符数组,而不能对一个整数数组或一个 char 指针数组做任何类似的事情的基本原因是 printf()
已被训练(编码、编程)以专门处理字符数组,但尚未被训练来处理整数数组或字符指针数组。除此之外,您必须以某种方式告诉它数组的长度。对于指针,这可能是一个空指针。对于整数,使用哨兵可能不明智。
关于c - c中数组和指针的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28314303/