[英]Getting the address of a statically allocated array into a pointer inside a struct
我的代码的简化版本如下:
struct args {
int p;
int *A;
};
typedef struct sort_args sort_args;
void func(int A[], int p)
{
args new_struct = {&A, p};
args *args_ptr = &new_struct;
}
我正在尝试将静态分配的数组(我认为这是术语)转换为指针,但是编译器不断抛出以下警告:
警告:初始化使指针从整数变为无强制转换[默认启用] args new_struct = {&A,p,r};
警告:(在'new_struct.p'的初始化附近)[默认启用]警告:初始化使指针从整数开始而没有强制转换[默认启用]警告:(在'new_struct.A'的初始化附近)[默认启用]
我究竟做错了什么?
您将参数倒退了。
args new_struct = {&A, p};
=>
args new_struct = {p, A};
您需要以与结构声明中出现的顺序完全相同的顺序初始化结构的成员,或者您需要使用如下命名语法:
args new_struct = { .A = A, .p = p };
但这通常仅用于提高具有更多成员的较大结构的代码清晰度。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.