按值传递强制转换指针在C中是否有效?如果不是,为什么这有效?
#include <stdio.h>
typedef struct
{
int size;
char* str;
} MY_STRUCT;
void print_my_struct_prt(MY_STRUCT* mstrct)
{
printf("%s%d%s%s\n", "size: ", mstrct->size, " content: ", mstrct->str);
}
int main()
{
MY_STRUCT my_ptr_strct;
my_ptr_strct.size = 3;
my_ptr_strct.str = "first test";
print_my_struct_prt(&my_ptr_strct);
print_my_struct_prt(&(MY_STRUCT) { 6, "second test"});
return 0;
}
输出:
size: 3 content: first test
size: 6 content: second test
在第一个测试中,创建了一个结构,设置了值,并将地址传递给 print_my_struct_prt()。
在第二个测试中,我只能猜测值 6 和“第二个测试”存储在内存中,并且内存中位置的地址被传递给 print_my_struct_prt()。这个对吗?
除了明显的可读性问题之外,这在 C 中是否可以接受?