我想知道为什么在我的malloc之后所有修改都不起作用。 这里是我用来说明此代码:当初始化时C位字段未被修改
#include <stdio.h>
#include <stdlib.h>
struct Age {
unsigned int age : 16;
unsigned int two : 2;
unsigned int notToBeInitialed: 2;
};
int init(struct Age * p){
p = (struct Age *) malloc(sizeof(struct Age));
p->age = 5;
return 0;
}
int change(struct Age * p){
p->age = 99;
}
int getValue(struct Age * p){
return p->age;
}
int main(void) {
struct Age test;
init(&test);
printf("Age.age : %d\n", getValue(&test)); // gives me 0 , expected 5
change(&test);
printf("Age.age : %d\n", getValue(&test)); // gives me 99
return 0;
}
我做了什么错?
感谢您的帮助。
来源:http://www.tutorialspoint.com/cprogramming/c_bit_fields.htm Ideone:https://ideone.com/O59tqZ
谢谢大家:你们都得到了你的+1,因为你的答案都是真的。我认为Daniel Trugman的回答更清楚。我可能混淆了这个概念与另一种语言^^ – jy95