如何让小白轻松理解c语言难点——指针?

例如这个储物柜:

这些柜子,每个柜子都有编号,柜子里什么都能放。

如果你在一张纸条上写上「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为函数名*/

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180730A1ZN5F00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券