登录  | 立即注册

游客您好!登录后享受更多精彩

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[寒假笔记] c语言指针变量

[复制链接]
发表于 2021-2-4 19:31:19 | 显示全部楼层 |阅读模式
学习笔记
学习科目: c语言
学习安排: c语言
开始时间: 2021-02-04
结束时间:
指针变量同普通变量一样,使用之前要定义说明,还要赋予具体的值。指针变量的赋值只能赋予地址,决不能赋予任何其它数据,否则将引起错误。
存放地址的变量称为指针变量。一般变量存放的是数据本身,而指针变量存放的是数据的地址。
假设在程序中声明了1个int型的变量a,其值为68。系统为变量a分配的首地址为0x065FDF4H,pa是存放变量a地址的指针变量,即pa中存放的值为0x065FDF4H。
现在对变量a的访问有两种方式。一是直接按地址0x065FDF4H找到a的存储单元对a进行访问;二是按系统为pa分配的地址先找到pa,然后根据pa的值(即变量a地址0x065FDF4H)找到变量a在内存中的存储单元,从而对变量a进行访问。对于前一种访问方式称为直接访问方式,后一种访问方式称为间接访问方式。
如果一个指针变量存放的是某个对象的地址,则称这个指针变量指向该对象。在C++程序设计中,指针变量只有确定了指向才有意义的。

运算符
&:取地址运算符。

*:指针运算符(或称“间接访问” 运算符)。

       C语言中提供了地址运算符&来表示变量的地址。其一般形式为:&变量名;
如&a表示变量a的地址,&b表示变量b的地址。变量本身必须预先说明。
设有指向整型变量的指针变量p,如要把整型变量a 的地址赋予p可以有以下两种方式:
1、指针变量初始化的方法

      int a;

      int *p=&a;

2、赋值语句的方法

      int a;

      int *p;

      p=&a;

不允许把一个数赋予指针变量,故下面的赋值是错误的:

     int *p;

     p=1000;

被赋值的指针变量前不能再加“*”说明符,如写为*p=&a 也是错误的。

使用
通常指针变量的使用是:先定义指针变量,后给指针变量赋值,最后引用指针变量。
定义指针变量
在变量定义语句int *p, *p1, *q; 中用 * 定义的变量均为指针变量。因此该语句定义了名为p、p1与q三个整型指针变量。因为指针变量用于存放变量地址,而地址通常为4字节,所以指针变量的长度均为4个字节。

给指针变量赋初值有三种情况:
第一种情况是用取地址运算符"&"将变量地址赋给指针变量。如:p=&a;
第二种情况是将一个指针变量中的地址赋给另一个指针变量,如:p1=p;
第三种情况是给指针变量赋空值0,如q=0;表示该指针变量不指向任何变量。
经过赋值后,使指针变量p、p1指向变量a,q不指向任何单元。

指针变量初始化
指针变量可以象普通变量一样,在定义指针变量时赋初值,如上例中,定义指针变量p的语句可写成:int *p=&a;

运算
指针变量的运算有三种:赋值运算、关系运算与算术运算。
1.指针变量赋值运算
指针变量赋值运算就是将变量的地址赋给指针变量。
2.指针变量的算术运算
指针变量的算术运算主要有指针变量的自加、自减、加n和减n操作。
(1)指针变量自加运算
指令格式:<指针变量>++;
指针变量自加运算并不是将指针变量值加1的运算,而是将指针变量指向下一个元素的运算。当计算机执行 <指针变量>++ 指令后,指针变量实际增加值为指针变量类型字节数,即:<指针变量>=<指针变量>+sizeof(<指针变量类型>)。
(2)指针变量自减运算
指格式:<指针变量>- - ;
指针变量的自减运算是将指针变量指向上一元素的运算。当计算机执行 <指针变量>―― 指令后,指针变量实际减少为指针变量类型字节数,即
<指针变量>=<指针变量>―sizeof(<指针变量类型>)
自加运算和自减运算既可后置,也可前置。
(3)指针变量加n运算
指令格式:<指针变量>=<指针变量>+n;
指针变量的加n运算是将指针变量指向下n个元素的运算。当计算机执行 <指针变量>+ n 指令后,指针变量实际增加值为指针变量类型字节数乘以n,即:
<指针变量>=<指针变量>+sizeof(<指针变量类型>)*n

(4)指针变量减n运算
指令格式:<指针变量>=<指针变量>―n;
指针变量的减n运算是将指针变量指向上n个元素的运算。当计算机执行 <指针变量>― n 指令后,指针变量实际减少值为指针变量类型字节数乘以n,即:
<指针变量>=<指针变量>―sizeof(<指针变量类型>)*n


好懒~~不想说~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表