gpt4 book ai didi

c - Typedef 结构指针

转载 作者:太空宇宙 更新时间:2023-11-04 02:55:21 24 4
gpt4 key购买 nike

我想将一个指向我的结构的指针传递给一个函数来编辑该结构。

这不起作用:

typedef struct{

unsigned char x;
unsigned char y;
float z;


}C_TypeDef;


C_TypeDef *ptr_struct; //This is the part that I change to get it to work.


void print_TypeDef(C_TypeDef *report, unsigned char x_data)
{

report->x = x_data;
printf("x is equal to %d", report->x);


}

int main(void)
{

print_TypeDef(ptr_struct,0x23);
getchar();

}

现在,如果我更改声明指向此指针的部分,它仍然不起作用。这不起作用:

C_TypeDef x_struct;
C_TypeDef *ptr_struct;
ptr_struct = &x_struct;

但是如果我把它改成这个,它确实有效!!

C_TypeDef x_struct;
C_TypeDef *ptr_struct = &x_struct;

我的问题是为什么前两个不起作用?这让我很烦。

最佳答案

第一个版本的问题是,你没有为ptr_struct指向的地方分配内存,这通常会导致段错误。这是固定的:

C_TypeDef x_struct;
C_TypeDef *ptr_struct = &x_struct;

这就是第三个版本有效的原因。那么第二个版本有什么问题呢?因为你不能在任何函数之外分配一个全局变量,你可以像在第三个版本中那样初始化它们,或者你应该在一些函数中分配它,比如在 main 中:

C_TypeDef x_struct;
C_TypeDef *ptr_struct;

//omit other parts

int main(void)
{
ptr_struct = &x_struct; //Here assign the pointer a value
print_TypeDef(ptr_struct,0x23);
getchar();
}

关于c - Typedef 结构指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18199586/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com