首页 > 其他分享 >指针与数组(二)

指针与数组(二)

时间:2023-03-26 11:36:09浏览次数:35  
标签:10 指向 int 等价 数组 指针

指针和数组之间的替换 :

一维数组和指针:

  1. 数组名是数组的首地址
  2. 数组名是一个常指针 不可修改
  3. 可以对指针操作来访问元素

访问数组的方式:
1.直接访问数组
a[5];

2.使用指针
*p 等价于a[0]
*(p+1)等价于a[1]

3.修改数组的值
a[5]=10;
*(p+5)=10;

 

实例:

main() {
    int a[ARRAY_SIZE];  // 数组
    for (int i = 0; i < ARRAY_SIZE; ++i) {
        a[i] = i;
    }
    int *p = a;    // int *p; (1) p = a; (2) p = &a[0];//这两种是等价的指针指向数组首地址
        cout << "print array:" << endl;
    for (int i = 0; i < ARRAY_SIZE; ++i) {
        cout << *(p + i) << " ";
    } 

}

 

 

 

指针数组和数组指针: 

1.指针数组: int *p[10] (等价于 int *(p[10])), 因为[ ]的优先级大于 * 所以p和[ ]结合

指向:10个int 型的指针

2.数组指针: int (*p)[10] 相当于 int p[][10] ,二维数组就是数组指针

指向:p指向一个数组,该数组为10个int型的元素

3.二维数组拆解:

a[i][j] = *(a[i]+j) = *(*(a+i)+j) = (*(a+i))[j]

指针数组的使用:

    int a[10] = { 1,2,3,4,5,6,7,8,9 };
    int* p[10];//指针数组  含有 10个 int型指针
    p[0] = &a[0]; //p[0]指向a[0]的地址
    p[1] = &a[1]; //p[1]指向a[1]的地址
    cout << *(p[0]) << endl;//输出a[0]的值
    cout << *(p[0] + 1) << endl;//输出a[2]的值
    cout << *(p[1]) << endl;//输出a[2]的值
 
存储一个字符串列表
    const char *p[4] = { "aaaa","bbbb","cccc","dddd" };
    for (int i = 0; i < 4; i++)
    {
        cout << p[i] << endl;//输出字符串
        cout<<*(p[i])<< endl;//输出单个字符
    }

 

参考链接:

https://blog.csdn.net/qq_45303986/article/details/125173622

标签:10,指向,int,等价,数组,指针
From: https://www.cnblogs.com/spacerunnerZ/p/17257785.html

相关文章

  • C++指针
    1指针的概念#include<iostream>usingnamespacestd;/*间接引用指针时,可获得该指针指向的变量内容本部分参考内容:C++程序设计教程钱能清华大学出版社*/void......
  • 数组
    1、一维数组   ①创建:intarr[5]={0};,其中5的位置只能放字面常量或者#define定义的常量标识符   ②初始化:     不完全初始化intarr[5]={1,2};其......
  • 字符串转化为数组
    字符串转化为数组一、s.spilt() Scannerin=newScanner(System.in);Strings=in.nextLine();​String[]a=s.spilt("");Arrays.toString(a); 二、toCharA......
  • AcWing 第 96 场周赛 T3-4878. 维护数组
    https://www.acwing.com/problem/content/4881/输入样例1:52218112153121221421322123输出样例1:364输入样例2:5410161151551......
  • 1、删除排序数组中的重复项
    给你一个升序排列的数组nums,请你原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度。元素的相对顺序应该保持一致。由于在某些语言中不能......
  • Leetcode 15 & 16 (双指针)
    都是比较经典的双指针问题,我们可以从中总结一些双指针的规律首先这两题如果en做的话就是\(O(n^{3})\)的算法,暴力去找。但是我们可以发现这三个值是满足一定约束的,所以......
  • Java入门_一维数组_第三题_数组反转
    题目:数组反转要求:把数组的内容反转。如:arr{11,22,33,44,55,66}-->{66,55,44,33,22,11}。思路-1通过具体实例得,每一次都是将arr[i]和......
  • 4878. 维护数组
    维护数组分析:分别维护两个值sum1,sum2,其他套线段树板子实现:structNode{intl,r;intminv;intsum1,sum2;}tr[N<<2];voidpushup(Node&u,N......
  • 数组指针
    一、概念下面哪个是数组指针?int*p1[10];int(*p1)[10];int(*p)[10];解释:p先和*结合,说明p是一个指针变量,然后指向一个大小为10的整型数组,所以p是一个指针,指向整型数组,叫做......
  • js 数组与对象的区别
    js数组与对象的区别 学习javascript的时候,我曾经一度搞不清楚”数组”(array)和”对象”(object)的根本区别在哪里,两者都可以用来表示数据的集合。 比如有一个数......