桓楠百科网

编程知识、经典语录与百科知识分享平台

C语言编程入门:终于到指针了,今天是指针初步

很多人觉得C语言最难的是指针。

指针确实不大好掌握,很多人学到指针就容易犯迷糊,以至于后来Java发展时直接摒弃了指针。

但是请相信我,指针并没有你想象的那么难。

为什么没有那么难?

因为这是小白课程啊,我会尽量给你讲得通俗易懂。

首先我们要了解指针是什么?记住:

指针就是地址,反过来一样,地址就是指针。

所以介绍指针前,我先来讲一下地址。

1 地址

当我们定义一个变量时,这个变量本身其实有三个方面含义:变量名、变量值、变量地址。

例如定义一个整型变量a:

int a = 10 ;

此时变量名为a变量值为10,还有一个系统分配给它的地址

我们不能指定变量地址是多少,只能由系统分配。

有时候定义变量时没有初始化,那么变量只有变量名变量地址,变量的要等到给它赋值以后才有。

打个比方,定义变量就好像是买房,

int a;

就是告诉系统我要买一间房,房间名字叫a,房间大小是int(规定住进这个房间的人必须是整数,不能是实数或字符),然后系统分配一个地址来存放a,这个地址就相当于房号。

我们不能指定给变量分配什么房号(地址),但我们可以这个房号(地址)是多少。

看房号是多少,要用一个取地址的运算符,即&

没错,就是每次我们调用scanf输入数据时,变量前面的那个&。

&的功能就是取出变量的地址

一般将&念作“at”,它有点类似于邮箱地址里的那个@。@也是念作”at”,at在英文里就是“在哪里”的意思。

如果程序有定义 int a;

那么a的房号就是&a,假设这个房号是1号,那么,如果程序后面有语句:

scanf(“%d”, &a);

意味着,输入一个整数,放到1号房(&a)中。

程序1:

程序输出a的值和a的地址。

程序1运行结果:

a的值是可以更换的,比如第一次a的值是10,后面a的值变了,变成100。

但a的地址在定义变量时就定了,这个地址我们没法赋值,也没法改变。

就是说,定义变量时,是买房,买房就有房号了。但房间里面住的人是可以变的,第一次是10住进去,后来是100住进去。

所以这就叫变量,因为它的值是可以变的。

这个房间可以由不同的人住进去。但每次只能住1人。

当10住进这个房间时,输出的a是10;当100住进去时,输出的a就变成100了。

程序1的运行结果中,不同的电脑显示的地址可能不一样。比如在你的电脑里运行,可能显示的a的地址就不是6487580了。

2 指针

指针是一种数据类型,指针类型简称指针。

那么如果一个变量定义为指针类型,语法格式如下:

数据类型 * 指针变量名 ;

如:

int *p;

float *fp;

char *cp;

那么,上面定义的p、fp、cp都是指针变量名,他们属于指针类型。

指针变量和其他类型的变量有什么区别呢?

定义变量等于买房,那么指针变量比较大方,别的变量买房是要住人的,但指针变量买了不住人,只能住另外一个变量的地址。

指针就是一个大土豪,它买房不是为了住人,诺大的房间只住了另一个变量的房号。

重复一遍:指针变量不能住人,只能住另外一个变量的地址。

例如程序里有:

int a , b ;

float x ;

int *p1 ;

那么,买了两间房a、b,里面可以住整数(int);买了一间房x,里面可以住实数(float),买了一间房p1,p1这个房只能住a的地址或者b的地址。

还记得取地址的运算符吗?是&。

所以,如果有:

a = 10 ; b = 198 ;是对的。

p1 = 10 ; 是错的。

p1 = &a ; 是对的。

p1 = &b ; 也是对的。

但:

p1 = &x ; 是错的。

可能有人会问为什么p1 = &x错?

因为p1的定义是 int *p1;

它只能等于int变量的地址,不能等于其他类型的变量的地址。

程序2:

运行结果:

刚才说过,每个变量本身其实有三个方面含义:变量名、变量值、变量地址。

如果有定义:int a , *p1;

a=10;

p1=&a;

则指针变量名为p1,变量值是a的地址(就是说,p1这个房间里住的是a的房号),而p1也有它自己的地址。

再看一个例子,程序3:

运行结果:

上述程序p1=&a;

变量a的值是10,a的地址是6487580;

变量p1的值是6487580,p1的地址是6487568;

当p1=&b后,

变量b的值是99,b的地址是6487576;

当p1=&b后,

变量p1的值是6487576,p1的地址仍然是6487568。

今天是指针初步,主要带大家理解指针的概念,把程序1、2、3这三个程序读懂理解就完成今天的任务了。

3 总结

本节课介绍了如下内容:

  1. 取地址运算符: &。
  2. 指针变量定义语法形式:数据类型 *变量名;
  3. 每个变量都有三个含义:变量名(房间名)、变量值(房间里住的人)、变量地址(房号)。

介绍了3个程序来帮助各位朋友理解上述概念。

指针还有更多用途,比如结构指针,但第一步我们需要先搞清楚指针的基本概念,然后才能学更深入的知识。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言