簡體   English   中英

將指針傳遞給函數中的初始化結構

[英]passing a pointer to a initialized structure in a function

我有這樣的結構:

typedef struct{
char static_data[10];
int a;
int b;
} my_ds;

我已經將其初始化如下:

my_ds * ds = (my_ds *)malloc(sizeof(my_ds));
memmove(my_ds->static_data, buf, len);
ds->a = c;
ds->b = d;

並將其傳遞給函數:

int my_fun(void ** data);
my_fun((void *)&ds);

my_fun內部發生的情況是,第一個字段static [10]已正確初始化,但其他兩個值均為零。 我在這里想念什么?

memmove()? 我猜你打算使用memcpy()或strcpy()甚至是strncpy()!

而且my_fun(void **data)可能不需要my_fun(void **data) 。void指針可以指向任何內容,包括void指針。 (但這取決於未定義的函數定義)

在這種情況下, my_fun ( (void**) &ds);的&符(也不my_fun ( (void**) &ds); 也不需要。 任何指針都可以轉換為C中的void指針。

my_ds * ds;
ds = malloc(sizeof *ds);
if (len >= sizeof my_ds->static_data) len = sizeof my_ds->static_data - 1;
memcpy(my_ds->static_data, buf, len);
my_ds->static_data[len] = 0;
ds->a = c;
ds->b = d;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM