结构体指针的指针使用(转)
2011-07-21 18:14
218 查看
结构体指针的指针使用
在C/C++中,自定义类,结构体等默认都是按值传递的,按值传递在函数中是无法改变参数的值的。当函数要改变参数的值时,可以用指针传递参数,改变指针所指地址的值。
但是当我们要改变指针所指的地址时要怎么办呢?
这就要用到指针的指针了。例子:
#include <iostream>
using namespace std;
typedef struct node {
int data;
}node;
void change( node **p ) {
*p = new node();
(*p)->data = 1;
}
int main()
{
node *p;
change( &p );
cout << p->data << endl;
return 0;
}
在函数中,要给 p 分配内存空间,所以要改变结构体指针 p 的值,如果用 change( node *p ),默认 p 是按引用传递,p 的地址不会改变。
用 change( node **p ) 传递指针的指针,在给参数时用取地址符号 &p 把储存指针的地址传递给函数。在函数中用复引用符号 *p 把储存指针的地址转化为指针。然后就可以改变指针所指的内存地址了。
还有一个要注意的问题是优先级问题。
-> 的优先级高于 * ,如果用没有加括号 *p->data = 1,相当于 *( p->data ) = 1。会编译出错。
所以必须加括号!
相关文章推荐
- jna对结构体、指针、引用、拷贝参数传递的使用
- 终于弄明白了的结构体与typedef的使用,还有结构体指针的使用(二层结构体指针)
- 让你提前认识软件开发(13):指针及结构体的使用
- 《IOS_C语言》高级指针(结构体指针、结构体数组指针、结构体数组指针,作为函数的参数使用、预编译指令)
- C/C++结构体和结构体指针使用之我见
- [指针一]结构体数组作为形参传递,下标访问和指针访问使用该结构体
- C语言结构体指针在函数调用中的使用
- 使用结构体中成员变量指针的教训
- 《IOS_作业C语言》高级指针(结构体指针、结构体数组指针、结构体数组指针,作为函数的参数使用、预编译指令)
- 结构体成员指针使用要点
- 含有指针成员的结构体使用总结
- 你必须知道的指针基础-6.内存的初始化及结构体的使用
- linux 中使用结构体指针 segmentation fault
- 数组,结构体,结构体数组的差别 (使用指针访问元素时)
- 结构体指针变量使用时的注意事项
- 数组,指针,结构体的使用
- 指针在结构体中使用应注意
- 在结构体中包含自身类型指针时,使用typedef
- 从指针的使用角度看数组与结构体
- 【嵌入式系统学习记录】基于简易通讯录对指针、结构体、函数的使用体会