c语言指针与数组

1、指针数组元素与指针

数组是由同一种数据类型的元素系列构成,数组元素按顺序存储在内存中,通过使用索引来访问数组元素。在c语言中,首元素的索引值为0,因此包含n个元素的数组的末元素索引n-1;
要正确严谨的使用数组,因为编译器和程序运行都不会检查索引的合法。

在数组中,每一个数组元素在内存中都占用存储单元,都有相应的地址,数组元素指针就是数组元素的地址。
这里写图片描述
注:数组a不代表整个数组,只代表数组元素的地址。p=a表示把数组的首元素地址赋值给指针变量p;

#include<stdio.h>
int main(){
    int a[4]={1,3,5,6};
    //定义一个指针类型的变量p,p指向数组中第一个元素地址
    //等价于  int*p=a;或者int *p=&a[0]; 
    int *p=a;

    printf("%d\n",*a);//输出第一个元素地址中的值 
    printf("%d\n",*a+1);//*a+1是在第一个元素值上加1printf("%d\n",*(a+1));//输出数组中第二个值 
    printf("%d\n",*(a+2));//输出数组中第三个值 
    printf("%d\n",*(a+3));//输出数组中第四个值 

    return 0;

}

运行结果:
这里写图片描述
这里写图片描述

  1. 指针的数值就是它所指向的对象地址。

    1. 在指针前用运算符*可以得到该指针所指向的对象的数值。
  2. 对指针加1,等价于对指针的值加上它指向的对象的字节大小。
  3. 数组名就是数组元素的首地址。
  4. a[i]和*(a+i)是意义等价的。
    基于此,数组与指针之间就有密切关系,我们就可以用指针标识数组的每个元素,并且得到每个元素中的值。

2、指针操作

指针变量可以执行8种基本操作,还可以使用关系运算符来比较指针。

  1. 赋值:把一个地址值赋值给指针。int a=2; int *p=&a;
  2. 求值:运算符*可以取出指针指向地址中存储的数值。
  3. 取指针地址:使用&可以得到存储指针本身的地址。
  4. 将一个整数加给指针:使用+运算符把一个整数加给指针。两种情况:一种情况下这个整数都会和指针所指类型的字节数相乘,然后把所得结果加到初始地址上。另一种情况,如果超出初始指针所指向的范围,那么这个结果是不确定的。
  5. 比较:可以使用关系运算符来比较两个指针的值,前提是两个指针具有相同的类型。
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值