相关疑难解决方法(0)

char s []和char*s有什么区别?

在C中,可以在声明中使用字符串文字,如下所示:

char s[] = "hello";
Run Code Online (Sandbox Code Playgroud)

或者像这样:

char *s = "hello";
Run Code Online (Sandbox Code Playgroud)

那么区别是什么呢?我想知道在编译和运行时的存储持续时间实际发生了什么.

c string constants char

495
推荐指数
6
解决办法
33万
查看次数

为什么printf("%s",(char []){'H','i','\ 0'})用作printf("%s","Hi"),但是printf("%s", (字符*){ 'H', 'I', '\ 0'}); 失败?

我真的需要帮助.它已经动摇了我在C.Long的基础,我将非常感谢详细的答案.我把我的问题分成两部分.

答:为什么printf("%s",(char[]){'H','i','\0'});工作和打印Hi方式与传统方法printf("%s","Hi");一样?我们可以用(char[]){'H','i','\0'}它来代替"Hi"我们C代码中的任何地方吗?它们的含义是否相同?我的意思是,当我们用"Hi"C语言编写时,它通常意味着Hi存储在内存中的某个地方,传递给它的指针.可以说是看似丑陋的.(char[]){'H','i','\0'}他们完全一样吗?

B:printf("%s",(char[]){'H','i','\0'})工作成功时,printf("%s","Hi")为什么然后printf("%s",(char*){'A','B','\0'}失败大时间和seg-fault如果我运行它尽管有警告?它让我感到惊讶,因为在C中,不char[]应该分解成char*,就像我们在函数参数中传递它一样,为什么它在这里没有这样做并且char*给出失败?我的意思是,不是char demo[]作为参数传递给功能相同char demo*?为什么结果在这里不相同?

请帮我解决这个问题.我觉得我还没有理解CI非常失望的基础知识.谢谢!

c arrays string pointers casting

7
推荐指数
2
解决办法
850
查看次数

标签 统计

c ×2

string ×2

arrays ×1

casting ×1

char ×1

constants ×1

pointers ×1