c - c中数组和指针的名称

标签 c arrays pointers

我想知道为什么我可以使用字符数组的名称,以便将整个字符串放在中间。我不能对 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/

相关文章:

c - 带有指针变量的地址数组

c - 使用c实现rsa加密解密

java - 使用循环打印数组的输出?

arrays - 排序中的 Swift For 循环枚举不同

c++ - 如何从 std 字符串 (c_str()) 设置 char * 值不起作用

C:很多关于char*的问题

c - 在按 ENTER 之前捕获 SIGINT 后程序不会结束吗?

c - 在 CUDA C 中取消引用指针

C语言-套接字-两个客户端之间的聊天(使用一个服务器作为中间人)

javascript - 我怎样才能获得一个只有原始值的唯一值的新 json