我能相信这一个:
第6.7.8p10节C标准的初始化
它会一直设为0吗?此规则是否有例外(可能是特定于编译器的规则)?
以这种方式使用复合文字来安全地初始化指针是完全可能的吗?:
#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)
它什么都没打印.