首页 > 其他分享 >c语言 数组与指针

c语言 数组与指针

时间:2023-12-20 13:32:37浏览次数:26  
标签:遍历 语言 指向 int 地址 数组 指针

@TOC


前言

之前我们讲了指针数组,今天讲一下数组指针。

一、数组与指针的概述:

数组指针就是数组的指针,就是指向数组的指针。

  1. int a [5] = {1,2,3,4,5}; / / 定义一个数组
  2. int *p = &a[0]; / / 定义一个指针指向数组的首地址,由于 数组的首地址就是数组名,所以&a[0]==a; 则可写为 int * p = a;
  3. 则此时的指针 p 就是数组指针

二、数组指针遍历数组:

因为 指针 p 指向 数组的首地址,则可以通过地址遍历数组的元素。

  1. 前面我们讲过指针的偏移,又因为 p 指向数组可得到: p+0 == &a[0];
    p+1 == &a[1]; p+2 == &a[2]; p+3 == &a[3]; p+4 == &a[4];
  2. a[0] == *&a[0] == *(p+0) == *p; a[1] == *&a[1] == *(p+1) == *p; a[2] == *&a[2] == *(p+2) == *p; a[3] == *&a[3] == *(p+3) == *p; a[4] == *&a[4] == *(p+4) == *p;

三、数组指针遍历数组元素的应用:

c语言 数组与指针_数组指针

注意: 1.* (p+i)一定要加小括号,因为* 的优先级低于 + 。

总结

指针数组和数组指针一定要好好理解,不要搞混淆。

标签:遍历,语言,指向,int,地址,数组,指针
From: https://blog.51cto.com/u_16159289/8906655

相关文章

  • C++引用在本质上是什么,它和指针到底有什么区别?
    参考文章:https://www.bilibili.com/read/cv13541907/对于指针变量P,引用变量Q,以及变量a=10;赋值过程:P=&a;&Q=a;P=&a:将变量a的地址传给指针P。a的地址上存的值是10;P的地址上存值是a的地址;*P:指向的是存在指针P上的地址(a的地址)上的内容,即a的值10。指针P指......
  • [LeetCode] LeetCode81. 搜索旋转排序数组II
    题目描述思路:是lc33.搜索旋转排序数组的延伸,允许包含重复元素起初:当nums[left]<=nums[mid]时,区间[left,mid]有序当nums[left]>nums[mid]时,区间[mid,right]有序但是这个题目当nums[left]==nums[mid]时,无法判断哪个区间是有序的,无法判断target位于左侧还是右侧,此时无......
  • [LeetCode Hot 100] LeetCode153. 寻找旋转排序数组中的最小值
    题目描述思路如果数组翻转后又回到升序的情况,即nums[left]<=nums[right],则nums[left]就是最小值,直接返回。如果数组翻转,需要找到数组中第二部分的第一个元素:若nums[left]<=nums[mid],说明区间[left,mid]连续递增,则最小元素一定不在这个区间里,可以直接排除,最小值在[......
  • 912. 排序数组---快速排序
    1.题目介绍给你一个整数数组 \(nums\),请你将该数组升序排列。示例1:输入:nums=[5,2,3,1]输出:[1,2,3,5]示例2:输入:nums=[5,1,1,2,0,0]输出:[0,0,1,1,2,5]提示:\(1<=nums.length<=5*10^{4}\)\(-5*10^{4}<=nums[i]<=5*10^{4}\)2.题解2.1随机化快速排......
  • 深度解析ArrayList:灵活高效的动态数组实现
    在Java集合框架中,ArrayList是一个常用而强大的类,它提供了动态数组的实现,允许在运行时动态调整数组的大小。ArrayList是List接口的实现类,基于动态数组的数据结构。它可以存储任意类型的对象,并提供了丰富的方法,包括添加、删除、遍历等,使其在各种场景下都能发挥重要作用。底层......
  • js 处理对象数组 + map 筛选出指定字段数据 + filter过滤重复数据/指定数据
    constres=[{id:1,name:'zhangsan',age:16,gender:0},{id:1,name:'zhangsan',age:16,gender:0},{id:2,name:'lisi',age:20,gender:1}];获取res中的id和name/*[{"id&......
  • 两个数组的过滤
    leta1=[{rmName:'王五'},{rmName:'李四'},{rmName:'张三'},{rmName:'赵六'}];letb2=[{name:'王五'},{name:'李四'}];//结果:得到a1中除去b2中值的其他数据//方法一:forEachletfilterA1=a1.filter(item=>......
  • 《初学C语言第33天》
    ////——————————————————————scanf的语法并举例说明////scanf是C语言中的一个标准输入函数,用于获取用户输入的数据,并赋值给变量。////——————基本语法:////scanf(format,variables);////其中,format是格式控制字符串,用于指定输入数据的格式,variable......
  • 算法数组集合
    JDK1.0java.util.Date缺陷:偏移量JDK1.1java.util.Calendar线程不安全缺陷:a.偏移量b.可变性,线程不安全的c.格式化:java.text.DateFormat只适用于Date,不能用于CalendarJDK8.0java.time:时间包LocalDate:只有年月日LocalTime:只有时分秒L......
  • C语言 不定长数组
    #include<stdio.h>#include<malloc.h>structstudent{intage;};structdata{intlen;//不占用空间structstudentstudents[0];};intmain(){structdata*d=malloc(sizeof(structdata)+2*sizeof(structstudent));......