发布
社区首页 >问答首页 >指针初始化(char和int)

指针初始化(char和int)
EN

Stack Overflow用户
提问于 2020-06-26 15:11:27
回答 1查看 52关注 0票数 2

在C语言中,if

代码语言:javascript
代码运行次数:0
复制
char *ptr1 = "something";

是允许的,那为什么不允许呢?

代码语言:javascript
代码运行次数:0
复制
int *ptr2 = {1,2,3};

不被允许?

EN

回答 1

Stack Overflow用户

发布于 2020-06-26 15:15:55

在第一种情况下,

代码语言:javascript
代码运行次数:0
复制
 char *ptr1 = "something";

"something"归结为指向字符串文字的第一个元素的指针,产生一个char*类型,因此该类型是兼容的,并且初始化中的赋值是有效的。

另一方面,

代码语言:javascript
代码运行次数:0
复制
int *ptr2 = {1,2,3};

{1,2,3}是一个用大括号括起来的初始值设定项列表,而不是int *,因此它是无效操作且不被允许。

实际上,您可以使用compound literal进行初始化,如下所示

代码语言:javascript
代码运行次数:0
复制
int *ptr2 = (int []){1,2,3};

其中ptr2将指向数组的第一个元素,该数组由大括号括起的初始化器列表中给出的值组成。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62589723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档