C语言的双星指针
"**"指针的含义
指针的指针,定义的仍是一个指针变量,只不过它所指向的对象又是一个指针,该指针的类型由最前面的类型说明符确定,例如 int **p,表示p是一个指针变量,它所指向的对象是一个指向int型的指针。
什么时候使用**指针
我的场景:
输入:需要一个数组,但是数组的长度未知,需要在方法体内部进行malloc,申请数组内存,在main中定义了个结构体的基本数据
输出:需要通过单独构造体遍历申请的内存数组
流程
- 声明构造体指针
P *p;
- 调用方法,把指针地址作为方法入参
hello(&p);
- 方法体使用双星指针指代此入参
hello(**p);
- 方法体内部使用malloc将构造体转数组形式(申请内存,建议多申请部分,防止开辟不足出现INF,或者异常)
*p= (P*) malloc(sizeof (P)*size+10);
size,是预估的长度,若当时未知,可以提前将算法再调用一次,赋值使用。
10,是多申请的部分,预防申请的内存不足
- 在main中调用
for(int i = 0 ;i < [长度]; i++){cout<<"i:"<<i+1<<",";cout<<(*(p+i)).x<<",";cout<<(*(p+i)).y<<","<<endl;}
- 最后别忘记
free(p);
不做这边可能会造成内存泄漏
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
