- 参考书籍:<C语言程序设计:现代方法>
- 几年前学习C语言因为没能理解指针, 放弃了. 结果现在还是得重新学习, 看来逃避是没有用的(现在流的泪都是以前脑子进的水)
-
指针
变量
一个变量拥有以下四个属性:
int a;
a=2;
- 变量类型 (int)
- 变量地址 (&a)
- 变量名 (a)
- 变量值 (2)
赋值
赋值是将变量地址
代表的内存
存储的变量值
修改成相应的值
int a, b;
a=2;
b=a;
//变量b中的 变量地址 的内存存储的 变量值 修改成2
指针变量的概念
如果某变量存储了另外一个变量的变量地址, (该变量的变量值
和另一变量的变量地址
相等)那么称该变量为指针变量
(该变量是一个指向另一个变量的指针)
*号的作用
指针的理解在于*
- 声明中*表示标识作用, 表示这个变量有别于普通变量, 是一个指针
变量
.使用的时候像普通变量一样对待. (因为操作地址的关系, 赋值要小心)
int *a;
//a是一个指针变量
- 非声明情况下,
*
会将变量中变量值
作为变量地址
, 取出其中的值
可以看做*
是&
的逆运算.&
是取址,*
是取值.(有点别扭)
int b, *a;
b=2;
a=&b;
//a的值是变量b地址, 那么*a就是b, 取出a值所代表地址中的值
作用
函数可以改变变量的值
void decompose(double x, long *int_part, double *frac_part);
{
*int_part= (long) x;
*frac_part=x-*int_part
}
int i;
double d;
decompose(3.14159, &i, &d);
//i,d的值变成3, 0.14159
练习
int **p//*p说明p是个指针, **p说明p是一个指向指针的指针
待续...