char *ch = "delhi"; // valid
int *arr = {1, 2, 3}; // invalid
int *arr = (int[3]){1, 2, 3}; // valid
Run Code Online (Sandbox Code Playgroud)
为什么上述某些陈述有效而其他陈述无效?
使用clang编译时没有警告.
typedef struct {
int option;
int value;
} someType;
someType *init(someType *ptr) {
*ptr = (someType) {
.option = ptr->option | ANOTHEROPT,
.value = 1
};
return ptr;
}
int main()
{
someType *typePtr = init( &(someType) {
.option = SOMEOPT
});
// do something else with typePtr
}
Run Code Online (Sandbox Code Playgroud)
这甚至是有效的C吗?
如果是这样的话:复合文字的生命周期是多少?
说我们有,
typedef struct{
char* ename;
char** pname;
}Ext;
Ext ext[5];
Run Code Online (Sandbox Code Playgroud)
我想要做的是填充数据如下:
ext[0].ename="XXXX";
ext[0].pname={"A", "B", "C"}; // and so on for the rest of the array
Run Code Online (Sandbox Code Playgroud)
- 我很确定这不是正确的做法,因为我遇到了错误.请告诉我正确的方法.谢谢.