- “学计算机一定要有一个非常强大的心理状态,计算机不是黑魔法,都是人想出来的,别人能够想的出来,那么,总有一天,我也能够想的出来。”
- 指针类型的变量就是保存地址的变量。
- int* p=&i;------P是一个指针,P里面的内容为变量i的地址,即说P指向了i;
- int* p,q;------注意:*号仅仅加给了p,即语句意思为p为指针,而q为普通的整数类型;(c语言中无int* 这个类型)
- %P:指针类型格式;
- 运算符*:单目运算符,用来访问指针的值所表示的地址上的变量;即地址+*=变量的值;此时变量的值*i可以用来做左值和右值;
- 区别:仅仅传递值得时候,传递得只是表面的参数值的大小,地址值上的变量的值并未改变;而使用*号运算符之后,则被赋予了访问的能力,即读和写的能力,此时可以改变地址所在的地方上的变量的值。
- 函数参数表里面的数组,实质为指针,即数组的地址值;
- 等价的四种函数原型:
int sum(int *ar);
int sum(int *);
int sum(int ar[]);
int sum(int []);
- 数组变量是特殊的指针,即&a[0],a可以表示地址;但是数组的单元表示的是变量,即a[0],a[1],a[2]等表示变量;
- []运算符可以对指针做,也可以对数组做;
- *运算符可以对指针做,也可以对数组做;
- int b[];--->int *const b;即数组变量不可以被赋值,数组是一个不可改变的指针;
- 例:
- int a[] = {5, 15, 34, 54, 14, 2, 52, 72};
- int *p = &a[5];
- 则p[-2]为54;
- 即[]运算符可以对指针做;