1、什么是指针?
在C语言中,访问变量的方式有两种:
1、通过变量名访问(例如说去什么花店,以花店的名称找到对应的花店)
2、通过地址访问(通过花店的地址,导航过去)
地址是什么呢?
就是花店具体的路径xxxx路xxx号,在C语言中用指针来表示(0x12345678)
所以说 指针=地址
在C语言中整型变量存放的是整数
字符变量存放的是字符
那么指针变量存放的就是地址
那么指针变量就可以说是存放指针的变量也可以说是存放地址的变量
2、为什么要用指针?
看下面一段代码
#include <stdio.h>
void _swap(int a, int b)
{
int temp=a;
a=b;
b=temp;
}
int main(void)
{
int a=5,b=10;
_swap(a,b);
printf("a=%d b=%d",a,b);
return 0;
}
在这一段代码运行下来发现,输出的结果a还是等于5,b还是等于10,他们的值并没有交换.
这是为什么呢?
从内存的方面分析,main函数的a,b存放在一个地址空间上,而函数中的a和b又是另外一个空间的a,b,并不是main函数中的a,b的地址,只是把他们的值传递过来了,最后进行交换,但是main函数中的a,b并没有发生变化。
那要交换他们的值就必须用到指针,把他们的地址传递进去就可以经行交换了。
#include <stdio.h>
void _swap(int *a,int *b)
{
int temp=*a;
*a=*b;
*b=temp;
}
int main()
{
int a=5,b=10;
_swap(&a,&b);
printf("a=%d b=%d\n",a,b);
return 0;
}
在这段代码里a,b的值就发生了改变,应为我们对a和b,的地址进从了操作,从而改变了他们的值。