对不起,如果这已经被问过,但我有点混淆传入和赋值给结构。将结构传递给一个函数并分配它
typedef struct test {
int x;
int y;
} test_t;
void func(test_t * test)
{
test_t second;
second.x = 2;
second.y = 3;
*test = second;
}
void main()
{
test_t first;
func(&first);
}
这是有效的吗?如果我没有记错的话,没有在func()内部结构化malloc,你不应该把func()中的指针* test指定给struct second,因为它的作用域主要在func()内部,并且一旦函数返回就会丢失。但是,在main()中打印出来的值是正确的。
有什么不同的方法来实现这个结果?这只是为了澄清一些混乱和健忘的记忆。
编辑:
的什么,我试图做的是这方面的一个更清楚的例子:
typedef struct args
{
int status;
int id;
unsigned long long start_address;
unsigned long long end_address;
unsigned long long size;
} args_t;
void ioctl_call(args_t *args)
{
args_t params;
/* get values */
ioctl(fd, cmd, params);
*args = params;
}
void main()
{
args_t args;
iotcl_call(&args);
printf("%d\n", args.id);
}
为什么创建'second',然后踩着'test'呢?为什么不直接操作'test'呢? – tadman
@tadman这是示例代码。这并不意味着有用;它的意思是指出一些东西。 – HTNW
我的问题依然存在。在什么情况下不会直接操纵它是更好的选择? – tadman