当前位置: 首页> 文旅> 旅游 > 【C语言】指针的指针使用场景

【C语言】指针的指针使用场景

时间:2025/9/15 7:48:50来源:https://blog.csdn.net/weiweiliude2/article/details/139648014 浏览次数:0次

前言

C 语言中,比较难理解的就是指针,完全搞懂了指针,那么C语言算是入了门。
指针中比较难理解的概念: 指针的指针
指针的指针,刚开始看到这个概念,感觉头疼。但是我们在程序里面应用一次就能搞懂。
本文通过使用指针的指针变量作为函数参数 获取一个内存地址,来理解指针的指针


1 . 指针作为函数参数

先来看一下 指针作为参数的作用

如果想要获取函数获取一个值,有两种方式:
(a)通过函数返回值,即return 返回值,一般最常用的。
(b)通过函数参数返回。
下面两个函数都设法通过函数参数 返回int型 数值 3,哪个函数能成功?

int i=0;
// 将参数V的值 变成3
void newInt(int v)
{v=3;
}
//将参数V的 变成3
void newInt2(int * v)
{*v = 3;
}

调用这两个函数测试一下

//指针的指针到底是干嘛用的呢。
#include <stdio.h>// 将参数V的值 变成3
void newInt(int v)
{v=3;
}//将参数V的 变成3
void newInt2(int * v)
{*v = 3;}int main()
{int i=0;printf("\n整型变量i的初始值    :%3d",i);newInt(i);printf("\n\n调用newInt()后的i值  :%3d",i);newInt2(&i);printf("\n\n调用newInt2()后的i值 :%3d",i);getchar();return 0;
}

在这里插入图片描述
这里得出一个结论:
想要改变整型参数的值,必须传递 整型指针
同理我们可以推断结论:
想要改变整型地址(整型指针)参数的值,必须传递必须传递 整型指针的指针


下面来验证一下

2. 指针的指针 作为函数参数

同样定义两个函数 void newIntPtr(int * v)void newIntPtr2( int **v):


//给参数v 获取一个新的内存地址
void newIntPtr(int * v)
{v = (int *)malloc(sizeof(int));;}//给参数v 获取一个新的内存地址
void newIntPtr2( int **v)
{*v = (int *) malloc(sizeof(int));
}

这两个函数哪一个能够成功的修改参数v的地址?

测试代码如下:

//指针的指针到底是干嘛用的呢。
#include <stdio.h>//给参数v 获取一个新的内存地址
void newIntPtr(int * v)
{v = (int *)malloc(sizeof(int));;}//给参数v 获取一个新的内存地址
void newIntPtr2( int **v)
{*v = (int *) malloc(sizeof(int));
}int main()
{int i=0;int * address= &i; //使用i的地址 初始化addressprintf("\n整型指针变量address的初始值 :%p",address);newIntPtr(address); //实际上这样使用,是错误的,因为在函数内部申请的地址,没有地方释放。printf("\n\n调用newIntPtr2后的address值 :%p",address);newIntPtr2(&address);printf("\n\n调用newIntPtr2后的address值 :%p",address);free(address); //释放address的内存getchar();return 0;
}

在这里插入图片描述

关键字:【C语言】指针的指针使用场景

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: