我似乎无法理解以下指针符号之间的区别,有人可以指导我吗?
typedef struct some_struct struct_name;
struct_name this;
char buf[50];
this = *((some_struct *)(buf));
现在我试着玩了一下,做了上面的事情,比如:
struct some_struct * this;
char buf[50];
this=(struct some_struct *)buf;
就我而言,我认为这两种实现应该产生相同的结果,有人可以指导我两者之间是否存在差异,如果有,有人可以指出吗?
谢谢。
最佳答案
在您的第一个片段中,this
不是指针,它是 some_struct
的一个实例。您所做的分配对 buf 中的内容进行了浅拷贝(即 memcpy()
),就好像它也是 some_struct
的实例一样。
在第二个片段中,this
是一个指针,它只是指向buf
的地址。
所以,基本上总结一下,第一个片段 this
不是指针,结构被复制到其中。在第二个中,它是一个指针并分配给与 buf
相同的内存(即不是副本)。
关于c - 指针语法查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9039461/