[英]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.