初识指针
若是没有指针
int swap (int p1,int p2)//swap函数进行指针地址的交换
{
int temp;
temp= p1; p1= p2; p2=temp;
}
int main()
{
int a=3,b=4;
printf("交换前:a=%d,b=%d\n",a,b);
swap(a,b);
printf("交换后:a=%d,b=%d",a,b);
}
可以看到函数内部并没有发生ab的交换
注意
函数只能实参传给形参,并不能形参传给实际参,所以我们需要应用到了指针。
int swap (int*p1,int*p2)//swap函数进行指针地址的交换
{
int temp;
temp=*p1;*p1=*p2;*p2=temp;
}
swap函数改成这样之后,运行结果如下
二重指针的作用
由上面我们知道了一重指针可以用于交换变量那么,二重指针有什么用呢——平推过来就是二重指针是给函数改变一重指针的地址
#include <stdio.h>
#include <malloc.h>
#include <string.h>
void test(char **p)
{
*p = (char*)malloc(10 * sizeof(char));
strcpy(*p, "123456789" );
}
void main()
{
char *str = NULL ;
test(&str);
printf("%s\n", str);
free(str);
}
————————————————
版权声明:本文为CSDN博主「HuffieWang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/HuffieWang/article/details/51744043
- 这是之前学习数据结构学习过的一个博主的文章感觉这个例子挺好的,可以看到这个例子中如果没有双重指针的话就会操作了空气是无法给str字符串赋值的
多重指针
多重指针在数据结构中起着很大的作用
//************************************************
//初始化函数
Status BST_init(BinarySortTreePtr P)
{
P->root=(BinarySortTree*)malloc(sizeof(BinarySortTree));
if(P->root==NULL)
{
printf("初始化失败,内存空间无法分配!\n");
return ERROR;
}
else
{
P->root=NULL;
printf("初始化成功!\n");
return SUCCESS;
}
}
- 在这个函数中传进来的二叉树根节点就算是一个多重指针了,而P->root已经算是在上述例子中二重指针的*p了,所以由此可见指针以及多重指针的重要性