首页 > 编程语言 >05_C++数组指针和指针数组

05_C++数组指针和指针数组

时间:2024-03-18 09:33:27浏览次数:16  
标签:arr 数组 int C++ 地址 一维 指针

1.数组指针:当数组指针指向一个一维数组时,()优先级高,说明p是指针,指向一个整型的一维数组。这个一维数组的长度是n,也可以说p的步长为n。当p+1时,p指针会跨过n个整型数据的长度。

2.指针数组:当定义一个一维数组时,系统会在内存中为改数组分配一个储存空间,其数组的变量名就是数组的首地址。若定义一个指针变量,并将数组的首地址赋值给指针变量,则我们说该指针指向了这个一维数组

是一个由n个指针类型元素组成的指针数组,或者说这个当一个数组里含有的元素为指针类型的时候,它就被成为指针数组。

#include<iostream>
#include<string>
using namespace std;int main() {
    //含有5个整数的数组,元素值分别为1,2,3,4,5
    int arr[5] = { 1,2,3,4,5 };
    //数组指针,由内向外的顺序,首先p是个指针,指向大小为5的数组的指针
    int(*p)[5] = &arr;
    //指针数组,通过循环将arr数组每行的首地址分别赋值给q里的元素
    int* q[5];
    for (int i=0;i<5;i++)
        q[i] = &arr[i];
    
    cout << "arr:" << arr << endl;
    cout << " &arr[0]" << &arr[0] << endl;
    cout << "p[0]:" << p[0] << endl;
    cout << "*p:" << *p << endl;
    cout << "*p[0]:" << *p[0] << endl;
    cout << "**p:" << **p << endl;
    cout << "*************"  << endl;
    cout << "&(p[0]):" << &(p[0]) << endl;
    cout << "&(*p):" << &(*p) << endl;
    cout << "*************" << endl;
    cout << "q[0]:" << q[0] << endl;
    cout << "&(q[0]):" << &(q[0]) << endl;

    //访问数组元素
    for (auto i : arr)
        cout << i << endl;
    for (auto i : q)
        cout << i << endl;

}

 输出

 当定义一个一维数组时,系统会在内存中为改数组分配一个储存空间,其数组的变量名就是数组的首地址。若定义一个指针变量,并将数组的首地址赋值给指针变量,则我们说该指针指向了这个一维数组。arr[0]的地址也是数组的首地址。

通过循环将arr数组每行的首地址分别赋值给q里的元素,这里int * q[5]表示一个一维数组内存放五个指针变量,q[0]存储的是指向arr[0]的指针,以此类推。

标签:arr,数组,int,C++,地址,一维,指针
From: https://www.cnblogs.com/qhj384343045-/p/18079070

相关文章

  • Qt/C++监控推流设备推流/延迟极低/实时性极高/rtsp/rtmp推流/hls/flv/webrtc拉流/调整
    一、前言算下来这个推流的项目作品写了有四年多了,最初第一个版本只有文件点播的功能,用的纯QTcpSocket通信实现,属于比较简单的功能。由于文件点播只支持文件形式的推流,不支持网络流或者本地设备采集,所以迫切需要打破这个瓶颈,而后加入核心的网络推流功能,这也是本项目的核心功能,不仅......
  • C/C++中的常用操作符与强制类型转换
    引言:在前两篇博客,我们详细介绍了C语言的基本数据类型和判断操作,相信大家对此已经有所掌握,在本篇博客,我们将继续介绍C语言中常用的几类操作符。一.算数操作符在写代码中,一定会涉及到计算问题,为此,C语言提供了一套操作符,分别是加法:+;减法:-;乘法:*;除法:/;取余数:%;我们依次结合代码讲解......
  • 2.3C++对象模型和this指针
    1、成员变量和成员函数分开存储在C++中,类内的成员变量和成员函数分开存储只有非静态成员变量才属于类的对象上空对象占用内存空间为1。C++编译器会为每个空对象也分配1个字节的空间,是为了区分空对象占内存的位置。每个空对象也应该有一个独一无二的内存地址。calssPerson{......
  • 一.深入指针(一)
    指针的学习是C语言中最难的,也是最重要的。最重要的一点就是:指针=地址特别的,指针特有的符号就是:*&(取地址符号)指针变量的表达式为:这只是最简单的指针变量,也是基础。解引用操作符:上述的例子中,其实已经给出了解引用操作符的表达式就是:对于指针的学习,还有一个重要的知识点就是co......
  • 一.深入指针(二)
    前面已经学习了如何创建整形指针,创建整形指针的形式有哪些。那么,今天呢,我们就来讲一讲指针数组是如何创建的。在了解指针数组之前,先了解什么是数组名吧。数组名:就是数组⾸元素(第⼀个元素)的地址。这里有一段代码来体会一下数组名到底是什么意思吧,代码:三个打印,就有三种不同的......
  • 【VC++学习笔记】控件及按钮的设置和使用
    1:按钮的使能与禁止用ClassWizard的MemberVariables为按钮定义变量,如:m_Button1;则m_Button1.EnableWindow(true);使按钮处于允许状态m_Button1.EnableWindow(false);使按钮被禁止,并变灰显示2:控件的隐藏与显示用CWnd类的函数BOOLShowWindow(intnCmdShow)可以隐藏或显示......
  • js数组循环常用的几种方法
    前端开发中,经常要用到循环,保存一份,后面慢慢补充。js数组循环常用的几种方法:。1、for循环最基本的循环方式,也是速度比较快,效率比较高的循环方式,vararr=[1,2,3,4,5];for(vari=0;i<arr.length;i++){ console.log(arr[i]);}2、forEach循环历数组中的每一......
  • C++ 并发编程指南(11)原子操作
    文章目录一、原子操作1、基本概念2、C++中的原子类型3、示例4、总结前言在C++多线程编程中,原子操作扮演着至关重要的角色。它们提供了一种在多线程环境中安全地访问和修改共享数据的方式,从而避免了数据竞争和不一致性的问题。本文将详细介绍C++中的原子操作,包括其......
  • 数组基础使用
    关于数组①数组定义之后大小不能改变②数组内元素数据类型相通不允许出现不同类型③数组内的元素可以是任何数据类型包括基本数据类型和引用数据类型④数组变量属于引用类型,数组也可以看做是对象,数组的每个元素的相当于这个对象的成员变量⑤数组本身是对象Java中对象是在......
  • C++算法学习心得八.动态规划算法(5)
    1.买卖股票的最佳时机(121题)题目描述:给定一个数组prices,它的第 i个元素 prices[i]表示一支给定股票第i天的价格。你只能选择某一天买入这只股票,并选择在未来的某一个不同的日子卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取......