C程序设计语言(三)指针与数组

本文深入探讨了C语言中的指针与数组,包括指针的基础概念、运算、指针与数组的关系、多维数组、指针数组、函数指针以及复杂的声明。重点阐述了指针如何用于数组的遍历和操作,以及数组名与指针的等价性,并通过实例讲解了函数指针的使用和声明。
摘要由CSDN通过智能技术生成

5. 指针与数组

C语言的灵魂

基础

  • 指针是能够存放一个地址的一组存储单元,通常是2个字节或者4个字节
  • 取地址,一元运算符&,只能作用于内存中的对象(变量,数组元素),不能作用于表达式,常量,register类型的变量
  • 间接寻址/引用,一元运算符,*
  • 指针变量也是变量,不是只能通过间接引用来使用,例如 ip = iq
int x = 1, y = 2, z[10];
int *ip;    /* ip是是指向int类型的指针 */
ip = &x;    /* ip现在指向x */
y = *ip;    /* y的值现在是1 */
*ip = 0;    /* x的值现在是0 */
ip =&z[0];  /* ip现在指向z[0] */

指针的运算

  • 相同类型之间指针的赋值
  • 指针同整数之间的加减法
  • 指向相同数组的两个指针的减法或者比较
  • 指针赋值为0,或者与0的比较,0通常定义为NULL
  • 其他指针运算全部都是非法的

指针和数组

  • 指针变量可以指向数组元素
  • 指针的增减反映到指向数组的不同位置的元素
  • 间接引用可以使用数组元素
  • 数组名等于数组第一个元素的地址,数组名上可以进行间接寻址
  • 指针和数组名的区别在于数组名不是变量,不能像变量一样操作它
  • 字符指针
    • 字符串常量 “I am a string”
      • 是一个数组
      • 可以作为函数参数,printf
      • 可以作为右值
char amessage[] = "now is the time"; /* 定义一个数组 */
char *pmessage = "now is the time"; /* 定义一个指针,指向一个字符串常量*/

这个区别就大了,amessage是可以修改内容的,pmessage指向的常量,是不能改变的。

  • 字符串数组和字符指针的区别
    • 数组和指针的区别,数组名不能变,指针可以变
    • 数组通过下标的变化遍历,指针自增自减来移动
/* s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值