结构初始化失败
structure initialization failed
int main()
{
int i;
typedef struct {
int no[6];
int socket;
}data;
data *a = {
a->no[6] = {0},
a->socket= 3,
};
printf( "no[0] = %d\n",a->no[0]);
printf("socket = %d\n", a->socket);
getchar();
return 0;
}
在这段简单的代码中,我创建了一个结构并使用结构指针对其进行初始化 - 将 0 值分配给数组 'no' 的所有元素,并将值 3 分配给变量 socket。我收到错误信息:
错误 C2440:'initializing':无法从 'initializer list' 转换为 'data *'
注意:初始化器包含太多元素
我哪里错了?
我也试过
data a = {
a.no[6] = {0},
a.socket= 3,
};
printf("no0 = %d\n",a.no[0]);
printf("socket = %d\n", a.socket);
这里的代码是 运行 但显示 a.socket = 0 而不是 3。
这个声明
data *a = {
a->no[6] = {0},
a->socket= 3,
};
没有意义。
如果你想声明一个指向结构的指针,那么你可以使用像
这样的复合文字
data *a = ( data[] ){ { { 0 }, 3 } };
或者应该动态分配数据类型的对象。
data *a = malloc( sizeof( data ) );
a->no[0] = 0;
a->socket = 3;
如果你不想声明一个指针,那么你可以按照演示程序中所示的方式编写如下
#include <stdio.h>
typedef struct {
int no[6];
int socket;
} data;
int main(void)
{
data a = { { [0] = 0 } , .socket = 3 };
printf( "no0 = %d\n",a.no[0] );
printf("socket = %d\n", a.socket);
return 0;
}
程序输出为
no0 = 0
socket = 3
int main()
{
int i;
typedef struct {
int no[6];
int socket;
}data;
data *a = {
a->no[6] = {0},
a->socket= 3,
};
printf( "no[0] = %d\n",a->no[0]);
printf("socket = %d\n", a->socket);
getchar();
return 0;
}
在这段简单的代码中,我创建了一个结构并使用结构指针对其进行初始化 - 将 0 值分配给数组 'no' 的所有元素,并将值 3 分配给变量 socket。我收到错误信息: 错误 C2440:'initializing':无法从 'initializer list' 转换为 'data *' 注意:初始化器包含太多元素
我哪里错了? 我也试过
data a = {
a.no[6] = {0},
a.socket= 3,
};
printf("no0 = %d\n",a.no[0]);
printf("socket = %d\n", a.socket);
这里的代码是 运行 但显示 a.socket = 0 而不是 3。
这个声明
data *a = {
a->no[6] = {0},
a->socket= 3,
};
没有意义。 如果你想声明一个指向结构的指针,那么你可以使用像
这样的复合文字data *a = ( data[] ){ { { 0 }, 3 } };
或者应该动态分配数据类型的对象。
data *a = malloc( sizeof( data ) );
a->no[0] = 0;
a->socket = 3;
如果你不想声明一个指针,那么你可以按照演示程序中所示的方式编写如下
#include <stdio.h>
typedef struct {
int no[6];
int socket;
} data;
int main(void)
{
data a = { { [0] = 0 } , .socket = 3 };
printf( "no0 = %d\n",a.no[0] );
printf("socket = %d\n", a.socket);
return 0;
}
程序输出为
no0 = 0
socket = 3