键入将结构转换为int

时间:2012-02-27 09:04:43

标签: c type-conversion

大家好,我想问一个关于类型铸造的问题。这让我很困惑。 我正在编写一个代码,其中我正在使用已经创建的具有此类原型的函数。

void function (uint8_t * output , const uint_8 * buffer , int bufferlen);

它被称为

const char * text = "some text";
uint8_t result[16];
function (result, (uint8_t *)text , strlen(text)); 

但我的问题是我必须调用它并传递一个结构,所以我调用这个函数

const struct mystruct * ms;

function (result, (uint8_t *)ms , sizeof(*ms)); 

但它给了我分段错误。 任何人都可以指导我应该通过什么代替第三个论点。

由于

我使用C编程linux

2 个答案:

答案 0 :(得分:0)

结构有多大?你的结果有一个特定的长度,16,我猜你正在调用的函数是复制到结果中。如果它太小,你就会遇到问题。

答案 1 :(得分:0)

您声明了一个未初始化的指针,该指针未指向有效内存。这就是函数在尝试使用该指针时崩溃的原因。请改用:

struct mystruct *ms = (struct mystruct *) malloc(sizeof(struct mystruct)); 
function (result, (uint8_t *)ms, sizeof(struct mystruct));  
free(ms);

或者:

struct mystruct ms; 
function (result, (uint8_t *)&ms, sizeof(ms));