例如这个储物柜:
这些柜子,每个柜子都有编号,柜子里什么都能放。
如果你在一张纸条上写上「C0314」,然后把它放进 C0322 号柜。那么我们就说「C0322 号柜是『指向 C0314 号柜的指针』」。
1.指针运算符
(1)取地址运算符&
取地址运算符&是单目运算符,其结合性为自右至左,其功能是取变量的地址。在scanf函数及前面介绍指针变量赋值
中,我们已经了解并使用了&运算符。
(2)取内容运算符*
取内容运算符*是单目运算符,其结合性为自右至左,用来表示指针变量所指的变量。在*运算符之后跟的变量必须是指
针变量。需要注意的是指针运算符*和指针变量说明中的指针说明符* 不是一回事。在指针变量说明中,“*”是类型说明符,
表示其后的变量是指针类型。而表达式中出现的“*”则是一个运算符用以表示指针变量所指的变量。
main(){
int a=5,*p=&a;
printf ("%d",*p);
}
......
表示指针变量p取得了整型变量a的地址。本语句表示输出变量a的值。
2.指针变量的运算
(1)赋值运算
指针变量的赋值运算有以下几种形式:
指针变量初始化赋值,前面已作介绍。
把一个变量的地址赋予指向相同数据类型的指针变量。例如:
int a,*pa;
pa=&a; /*把整型变量a的地址赋予整型指针变量pa*/
把一个指针变量的值赋予指向相同类型变量的另一个指针变量。如:
int a,*pa=&a,*pb;
pb=pa; /*把a的地址赋予指针变量pb*/
由于pa,pb均为指向整型变量的指针变量,因此可以相互赋值。
把数组的首地址赋予指向数组的指针变量。
例如: int a[5],*pa;
pa=a; (数组名表示数组的首地址,故可赋予指向数组的指针变量pa)
也可写为:
pa=&a[0]; /*数组第一个元素的地址也是整个数组的首地址,
也可赋予pa*/
当然也可采取初始化赋值的方法:
int a[5],*pa=a;
很多人的学习环境就是课堂,离开了课堂,自己学的时间少之又少,少了份气氛,就算逼着自己去学习,慢慢的也会觉得枯燥,有问题不会也没有人去问,可以找一个C/C++交流学习裙:六六六+二九五+四九八,邀请码【云志】集合了众多志同道合的朋友,这样对你学习会起到一定的暗示作用,有问题也可以在群里讨论。
把字符串的首地址赋予指向字符类型的指针变量。
例如:
char *pc;pc="c language";
或用初始化赋值的方法写为: char *pc="C Language";
这里应说明的是并不是把整个字符串装入指针变量, 而是把存放该字符串的字符数组的首地址装入指针变量。
把函数的入口地址赋予指向函数的指针变量。
例如:
int (*pf)();pf=f; /*f为函数名*/
领取专属 10元无门槛券
私享最新 技术干货