结构体指针赋值 结构体指针

生活知识 2023-12-16 21:22:05
导读 大家好,我是小典,我来为大家解答以上问题。结构体指针赋值,结构体指针,很多人还不知道,现在让我们一起来看看吧!假设有以下代码:List...
2023-12-16 21:22:05

大家好,我是小典,我来为大家解答以上问题。结构体指针赋值,结构体指针,很多人还不知道,现在让我们一起来看看吧!

假设有以下代码:

ListNodePtr s;

*ListNodePtr p=&s;

**ListNodePtr pp=&p;

假设ListNodePtr s在内存中存放的地址为1000,p指向s,pp指向p,示意如下:

1000:s的内容

1005:p的内容=1000

1009:pp的内容=1005

即s的地址是1000,代表结构体的内存位置;p的地址是1005,p的值为1000指向s;pp的地址是1009,p的值为1005指向p(即指针的指针)。

故:

1. ListNodePtr s:s就是结构体的代表,并不是结构体指针,p才是结构体指针;

2. *ListNodePtr s:这里s才是结构体指针;

3. 传参时,用function_2(&s)或function_2(*s)可直接在函数中访问原结构体内容;用function_1(s)则会将结构体复制一份压到参数栈中,函数中访问的是复制的副本。看实际需要使用。

本文到此讲解完毕了,希望对大家有帮助。

免责声明:本文由用户上传,如有侵权请联系删除!