结构体指针与结构体指针的指针的区别?
发布网友
发布时间:2022-05-16 22:34
我来回答
共1个回答
热心网友
时间:2023-09-14 01:32
假设有以下代码:
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)则会将结构体复制一份压到参数栈中,函数中访问的是复制的副本。看实际需要使用。