C语言基础知识整理14指针妙用

本文详细介绍了C语言中指针如何作为函数参数来引用和操作数组,包括数组元素的指针、引用数组元素、通过指针引用数组和字符串的方法。通过指针可以改变函数外变量的值,实现数据的传递和更新,同时讲解了指针在引用多维数组和字符串中的使用技巧,以及与字符数组的区别和联系。
摘要由CSDN通过智能技术生成

指针变量作函数参数

函数参数可以是指针类型,作用是将一个变量的地址传送到另一个函数中。

为使在函数中改变的变量值能被主调函数main使用,应用指针变量作为函数参数,在函数执行过程中使指针变量所指向的变量值发生变化,函数调用结束后,这些变量值的变化依然保留下来,这样就实现了“通过调用函数使变量的值发生变化,在主调函数中可以使用这些改变了的值”的目的。

若想通过函数调用得到n个要改变的值,可以如此:

  1. 在主调函数中设n个变量,用n个指针变量指向它们;
  2. 设计一个函数,有n个指针形参。在函数中改变这n个形参的值;
  3. 在主调函数中调用这个函数,将这n个指针变量作实参,将其地址传给函数形参;
  4. 执行函数过程中,通过形参改变它们所指向的n个变量的值;
  5. 主调函数就可以使用这些改变了值的变量。

注意:不能企图通过改变指针形参的值而使其指针实参的值改变

函数调用可以(而且只可以)得到一个返回值(函数值),而使用指针变量作参数,可以得到多个变化了的值要善于利用指针法

通过指针引用数组

数组元素的指针

数组元素的指针就是数组元素的地址

可以用一个指针变量指向一个数组元素。

在C中,数组名(不包括形参数组名,形参数组不占据实际的内存地址)代表数组中首元素(即序号为0的元素)的地址。因此p=&a[0];等价于p=a;

数组名不代表整个数组,只代表数组首元素的地址。“p=a;”作用是把a数组的首元素的地址赋给指针变量p,而不是把数组a各元素的值赋给p。

定义时初始化:int *p=&a[0];等价于int a;p=&a[0];等价于int *p=a;

作用是将a数组的首元素(a[0])的地址赋给指针变量p(而不是赋给*p)。

引用数组元素时指针的运算

在一定条件下(当指针指向数组元素的时候)允许对指针进行加和减的运算。如:

1.加/减一个整数(用+/-或+=/-=),如p+1/p-1;

若指针变量p指向数组中某元素,则p+1/p-1指向下/上一个元素。注意:p+1加的是一个数组元素所占用的字节数。p+1所代表的地址实际上是p+1*dd为一个数组元素所占的字节数。

p初值为&a[0],则p+ia+i就是数组元素a[i]的地址,或者说,它们指向a数组序号为i的元素。//a代表数组首元素地址,a+i也是地址。计算方法和p+i一致。

*p+i*

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值