题记:因为想系统学一下数据结构,故先复习C语言的指针。
一、指针的作用
1、表示一些复杂的数据结构;
2、能直接访问硬件;
3、快速的传递数据,减少了内存的损耗;
4、能使函数返回一个以上的值;
5、能够方便的处理字符串。
二、指针的定义
1、指针就是地址,地址就是指针;
2、指针变量就是存放内存单元编号的变量,或者说指针变量就是存放地址的变量;
3、指针和指针变量是两个不同的概念。通常我们叙述是会把指针变量简称为指针,实际上他们的含义并不一样。
三、指针的常见错误
# include <stdio.h>
int main(void)
{
int * p;
static int i = 5;
*p = i; //错误,因为P中的值是一个垃圾值,使P指向了一个系统并未分配的值,不能访问通过*p访问该地址的值
printf("%d\n", *p);
return 0;
}四、使函数返回一个以上的值
看一个简单的例子,调用函数来交换两个变量的值:
/*
2016年8月31日21:28:47
交换两个变量的数值
*/
#include <stdio.h>
void change(int * x, int * y);
int main(void)
{
int x = 1;
int y = 2;
change(&x, &y);
printf("x = %d y = %d\n",x, y); //运行结果:x = 2 y = 1
return 0;
}
void change(int * x, int * y)
{
int t;
t = *x;
*x = *y;
*y = t;
return;
}如果调用函数利用return只能得到一个返回值,而使用指针变量做形参则可以返回多个变量的值。
注意下面两个程序不能完成交换两个变量的值的功能:
#include <stdio.h>
void change(int x, int y);
int main(void)
{
int x = 1;
int y = 2;
change(x, y);
printf("x = %d y = %d\n",x, y);
return 0;
}
void change(int x, int y) //不能完成互换功能,只是局部变量的值交换了,不会影响全局变量的值
{
int t;
t = x;
x = y;
y = t;
return;
}
#include <stdio.h>
void change(int * x, int * y);
int main(void)
{
int x = 1;
int y = 2;
change(&x, &y);
printf("x = %d y = %d\n",x, y);
return 0;
}
void change(int * p, int * q) //不能完成互换功能,只是交换了p和q的地址,不会改变x和y的值
{
int * t;
t = p;
p = q;
q = t;
return;
}

浙公网安备 33010602011771号