学习笔记(20):C语言 从小白到大神: 入门篇-数组的指针和指向数组的指针变量-1...

本文深入解析C语言中指针与数组的关系,包括指针变量的定义、赋值,通过指针引用数组元素的方法,以及指针算术运算的细节。了解如何使用指针操作数组元素,掌握p[i]、*(p+i)、*p++和*++p等表达式的含义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

立即学习:https://edu.youkuaiyun.com/course/play/8088/165748?utm_source=blogtoedu

1. 指向数组元素的指针变量的定义和赋值

c语言规定数组名代表数组的首地址(也就是第一个元素a[0]的地址),所以如下两个语句等价:

p = &a[0];

p = a; //把a数组的首地址赋给指针p,所以p此时指向数组首地址。

 

定义指针变量时也可以给指针赋初值。

int *p = &a[0]; //将a的首地址(a[0]的地址赋给指针变量p),所以p指向了a[0];

等价于

int *p;

p = &a[0];  //这里不要写成 *p=&a[0]; 只有在定义指针变量并赋初值时才会出现*号;

 

2. 通过指针引用数组元素

(1)*p = 19;  //表示对p当前所指向的数组元素赋值19;也就是a[0] = 19;

(2)p = p+1;//C语言规定p+1并不是简单的将P值+1,具体加几取决于指针变量p的类型,如果指针变量p为整型,则因为整型占4个字节内存,所以p+1相当于增加了4,p+1就使p指向了数组的下一个元素a[1];

(3)p+i 或者a+i意义(i是数组元素的下标):

假如p指向数组首地址,那么p+i或者a+i就是数组元素a[i]的地址,即他们指向数组a的第i个元素。也就是说,p+3和a+3的值(地址)都是&a[3],都指向a[3]

(4)*(p+i)或者 *(a+i)意义:p+i或者a+i所指向的数组元素,也就是a[i],比如*(p+2)或者*(a+2)就是a[2]

(5)p[i]意义:指向数组的指针变量p,p[i]跟数组元素等价,如p[i],与*(p+i)等价,也与a[i]等价

(6) *p++ 的含义:自增运算符和指针运算符优先级相同,并且是自右至左结合的,所以等价于*(p++); 整个的作用是得到p指向的变量的值(*p),然后再使p指针自加1,指向下一个数组元素

(7) *++p 的含义:先使p+1,然后取p值,所以实际上输出是a[1]的值,当然p也指向a[1]

(8)(*p) ++ 含义:表示p所指向的元素加1,如果p指向数组首地址,那么就等价于a[0]++,而不是指针值+1

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值