嵌入式学习——C语言指针(一)

一、地址和指针的概念

地址:内存单元的编号。

指针:一个变量的首地址就叫做该变量的指针。

1、内存中存取数据的方式

        1)直接存取

                直接用变量名存取变量所占内存单元的内容

                例:                 

int y,x = 3;
y = 3*x+2;
        2)间接存取

                首先从存放变量地址的指针变量中取得该变量的存储地址,然后再从该地址中存取该变量值。在这种存取方式中,存取变量的值是通过存取指针变量所“指向” 的内存单元中的内容。在此,所谓“指向”,是通过地址来体现的。

                例:       

int a;        //定义了一个变量a
int *p = &a;  //对a这个变量取到它的内存编号(即地址)
*p = 3;       //对这个地址上的内存单元给值为3

                由以上可知:指针变量的值为地址,普通变量的值为数据。

指针变量:用于存放其他变量地址的变量。

二、定义指针变量

        1、一般形式:基本类型标识符  *指针变量名;

        注意: 

                (1)指针变量名前的“*”只表示该变量为指针变量,以便区别于普通变量的定义,而指针变量名不包含该“*”。

        例如:  int  x,*s;   说明了s是一个指针变量,但不能说*s是指针变量。

                 (2)定义指针变量时必须指明基类型。一个指针变量不能忽而指向整型,忽而又指向实型。因为,不同类型的变量所占的字节数是不同的。

        2、指针变量赋值时要注意以下几点:

                (1)指针变量中只能存放地址,而不能将数值型数据赋给指针变量。

                (2)赋给指针变量的变量地址不能是任意的类型,而只能是与指针变量的基类型具有相同类型的变量的地址。

                例如,下面的赋值是错误的∶

                         float  a; int  * pointer_1; /*声明了指向整型变量的指针变量*/

                         pointer_1=&a; /*指向整型变量的指针变量里存放了实型变量的地址*/ 

                (3)与一般的变量一样,也可以对指针变量进行初始化。

                        例如:    int  x,*p=&x; *p=5;

三、引用指针变量

        1、若声明了 int a,*p; 则在引用指针变量时,可能有三种情况:

                (1)给指针变量赋值。如:p=&a;

                (2)引用指针变量的值(a的地址)。如:printf(“%p”,p);

                (3)引用指针变量指向的变量(a的值)。 如:printf(“%d”,*p);

        2、两个有关运算符的使用:

                (1)&  取地址运算符。 &a是变量a的地址。

                (2)*  指针运算符 (或称“间接访问”运算符),*p是指针变量p指向的对象的值。

  • 31
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值