C语言---指针(1)

指针的引入:·为函数修改实参提供支持

   ·为动态内存管理提供支持

   ·为动态数据结构提供支持

   ·为内存访问提供另一种途径

指针概述:

·内存地址:系统为了内存管理的方便,将内存划分为一个个的内存单元(1个内存单元占1个字节),并为每一个内存单元进行了编号,内存单元的编号称为该内存单元的地址,一般情况下,我们每一个变量都是由多个内存单元构成的,所以每一个变量的内存地址,其实就是这个变量对应的第一个内存单元的地址,也叫首地址

·变量指针:变量地址称为该变量的指针,变量地址往往是指变量在内存中第一个内存单元的编号(首地址)

·指针变量:存放其他变量的地址变量

·指向:指针变量中存放谁的地址,就说明该指针变量指向了谁

指针初始:

运行结果:

定义指针变量的一般形式:

基本类型标识符  * 指针变量名

eg:int x, *s     说明s是一个指针变量,但不能说*s是指针变量

指针变量的定义:

语法:数据类型  *变量列表

Eg:int a;//普通变量

int *a,*b;//指针变量

注意:·虽然定义指针变量*a,是在变量名前加*,但是实际变量名为a而不是*a

 ·使用指针变量间接访问内存数据时,指针变量必须要有明确的指向

 ·如果想借助指针变量间接访问指针变量保存的内存地址上的数据,可以使用指针变量前加*来间接访问。指针变量前加*,也称对指针变量解引用

    ·指针变量只能指向同类型的变量,借助指针变量访问内存,一次访问的内存       大小是取决于指针变量的类型

    ·指针变量在定义时可以初始化,这一点与普通变量是一样的

指针变量的使用:

指针变量的赋值:

操作指针变量的值:

操作指针变量指向的值:

指针变量作为函数参数:

指针变量作函数参数往往传递的是变量的地址(首地址),借助指针变量间接访问是可以修改实参变量数据的

案例1:

需求:要求用函数处理,用指针变量作为函数的参数

      ·方式1:交换指向:(执行的普通变量的值不变)

      ·方式2:交换值(指向的普通变量的值改变)

通过指针引用数组:

数组元素的指针

·数组指针:数组中的第一个元素的地址(数组首地址)

·指针数组:用来存放数组元素地址的数组

注意:虽然定义了一个指针变量接受数组地址,但不能理解为指针变量指向了数组,而应该理解为指向了数组的元素

指针的运算:

指针运算:指针变量必须要指向数组中的某个元素

数组名作函数参数

表现形式:·实参和形参都用数组名

     ·实参用数组名, 形参用指针变量

 ·实参形参都有指针变量

 ·实参为指针变量,形参为数组

函数的传参:

·值传递:一般发生在函数形参的类型为char、short、int、long、float、double这样的类型,他的传递一般是实参将自己的值复制一份给形参,也就是实参变量与形参变量的变量空间是独立的,此时形参无法改变实参的数据

·引用传递:一般发生在函数形参类型为数组,指针这样的类型,他的传递一般是实参将自 己内存的首地址复制一份给形参,也就是实参变量和形参变量对应内存空间 是同一个。此时形参可以改变实参的数据

数组指针:

数组指针:指向一维数组的指针变量

数组指针定义:假定该指针变量指向具有n个元素的一维数组,则数组指针变量定义如下:

      数据类型 (*数组指针变量名)[n];

     举例:

·一维数组:

||

·二维数组:

一维数组与二维数组的比较:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值