gpt4 book ai didi

c - 指针语法查询

转载 作者:太空宇宙 更新时间:2023-11-04 07:35:55 25 4
gpt4 key购买 nike

我似乎无法理解以下指针符号之间的区别,有人可以指导我吗?

 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com