小编Pet*_*nko的帖子

全局变量是否总是用零初始化?

我能相信这一个:

第6.7.8p10节C标准的初始化

它会一直设为0吗?此规则是否有例外(可能是特定于编译器的规则)?

c standards

3
推荐指数
1
解决办法
80
查看次数

复合文字和指针

以这种方式使用复合文字来安全地初始化指针是完全可能的吗?:

#include <stdio.h>
#include <string.h>

void numbers(int **p)
{
        *p = (int []){1, 2, 3};
}

void chars(char **p)
{
        *p = (char[]){'a','b','c'};
}

int main()
{
    int *n;
    char *ch;

    numbers(&n);
    chars(&ch);
    printf("%d %c %c\n", n[0], ch[0], ch[1]);
}
Run Code Online (Sandbox Code Playgroud)

输出:

1 a b
Run Code Online (Sandbox Code Playgroud)

我不明白它是如何工作的,它是否与带有局部变量的init指针不一样?

如果我尝试打印:

printf("%s\n", ch);
Run Code Online (Sandbox Code Playgroud)

它什么都没打印.

c pointers compound-literals

1
推荐指数
1
解决办法
89
查看次数

标签 统计

c ×2

compound-literals ×1

pointers ×1

standards ×1