【C++之数组与指针1】随机输入整数存入数组并用指针遍历

简介: 【C++之数组与指针1】随机输入整数存入数组并用指针遍历

本题收录于 牛客网 在线编程-语法篇-C++入门-02复合类型-指针-CPP26 / C语言入门-01指针-CC4

记得大一那会儿学校上C语言课,从指针开始后面就没学了😥

题目

描述:

键盘随机输入 6 个整数,将这些数据保存到数组中,利用指针遍历数组中的元素并打印。

输入描述:

键盘随机输入 6 个整数

输出描述:

输出数组中的所有元素,每个元素中间使用空格隔开

例如:10 20 30 40 50 60

示例1

输入:

10
20
30 
40
50
60

输出:

10 20 30 40 50 60

初始代码:

#include <iostream>
using namespace std;
int main() {
    int arr[6] = { 0 };
    int* ptr = arr;
    int len = sizeof(arr) / sizeof(int);
    for (int i = 0; i < len; i++) {
        cin >> arr[i];
    }
    // write your code here......
    return 0;
}

数组与指针

数组

一维数组声明语句格式:

类型名 数组名[数组元素个数]

数组元素的表现形式是 数组名+方括号"[ ]" ,括号里面为该元素在数组里的位置,称为 数组元素的下标

数组在声明的同时可以进行初始化,初始化的值用 大括号“{ }” 括起来。

  • 初始化时,大括号内的值会从下标为0的元素开始,依次赋值给数组元素。
  • 所有全局数组和静态数组的每个元素在编译时默认被设为0。
  • 如果初始化的数值个数少于方括号中声明的元素个数,则初始化按实际值的个数进行,除了局部数组(剩余元素不确定)外,全局数组和静态数组剩余的元素被初始化为0。
  • 如果初始化的数值个数多于方括号中声明的元素个数,则会报错。

本题中的数组声明和初始化:

int arr[6] = { 0 };

表示数组名为 arr ,有6个元素,每个元素为整型数,第一个元素初始化指定为0,其余5个元素也会被置为0。

通过数组元素的下标值可以访问数组元素。

本题中的访问数组元素:

int len = sizeof(arr) / sizeof(int); # 计算数组长度
for (int i = 0; i < len; i++) {
  cin >> arr[i];
}

利用数组元素的下标值依次输出数组所有元素的值。

注意数组元素的下标是从0开始的,因此具有6个元素的数组,下标有效范围为0-5.

指针

指针的使用可以直接访问程序数据的地址,省略通过变量名转换的过程,从而提高效率。

数组的起始地址即数组第一个元素的地址。数组一旦分配好空间,起始地址就确定了。不带下标的数组名就代表了数组的起始地址。例如 arr 就代表了 arr[0] 。

当指针指向数组的具体地址时,就可以用 运算符 “*” 来访问数组的每一个元素。

本题中的指针指向数组的起始地址:

int* ptr = arr;

这里 * ptr 表示被 ptr 指向的变量,即数组 arr[0] ,也就是说 ptr 指针指向数组 arr 的起始地址。

如果要访问除第一个元素外的其他元素,可以采用表达式 *(ptr+i) ,这里的 i 表示偏移量,即当前地址向后偏移 i 个位置,对应一个单位量而非字节。注意偏移不能越界。

使用指针和下标访问的对应关系:

数组元素位置 下标访问 指针访问
0 arr[0] * ptr
1 arr[1] * (ptr+1)
2 arr[2] * (ptr+2)
3 arr[3] * (ptr+3)
4 arr[4] * (ptr+4)
5 arr[5] * (ptr+5)

题解

此题属于入门题

输入:

10
20
30 
40
50
60

代码1:

不用指针遍历,直接用数组下标访问

#include <iostream>
using namespace std;
int main() {
    int arr[6] = { 0 };
    int* ptr = arr;
    int len = sizeof(arr) / sizeof(int);
    for (int i = 0; i < len; i++) {
        cin >> arr[i];
    }
    for (int i = 0; i < len; i++) {
        cout << arr[i] << " ";
    }
    return 0;
}

代码2:

使用指针遍历访问

#include <iostream>
using namespace std;
int main() {
    int arr[6] = { 0 };
    int* ptr = arr;
    int len = sizeof(arr) / sizeof(int);
    for (int i = 0; i < len; i++) {
        cin >> arr[i];
    }
    for (int i = 0; i < len; i++) {
        cout << *(ptr+i) << " ";
    }
    return 0;
}

两种访问元素的方式的输出结果都一样。

输出:

10 20 30 40 50 60
相关文章
|
1月前
|
存储 算法 搜索推荐
【C++面向对象——群体类和群体数据的组织】实现含排序功能的数组类(头歌实践教学平台习题)【合集】
1. **相关排序和查找算法的原理**:介绍直接插入排序、直接选择排序、冒泡排序和顺序查找的基本原理及其实现代码。 2. **C++ 类与成员函数的定义**:讲解如何定义`Array`类,包括类的声明和实现,以及成员函数的定义与调用。 3. **数组作为类的成员变量的处理**:探讨内存管理和正确访问数组元素的方法,确保在类中正确使用动态分配的数组。 4. **函数参数传递与返回值处理**:解释排序和查找函数的参数传递方式及返回值处理,确保函数功能正确实现。 通过掌握这些知识,可以顺利地将排序和查找算法封装到`Array`类中,并进行测试验证。编程要求是在右侧编辑器补充代码以实现三种排序算法
42 5
|
3月前
|
存储 程序员 编译器
C 语言数组与指针的深度剖析与应用
在C语言中,数组与指针是核心概念,二者既独立又紧密相连。数组是在连续内存中存储相同类型数据的结构,而指针则存储内存地址,二者结合可在数据处理、函数传参等方面发挥巨大作用。掌握它们的特性和关系,对于优化程序性能、灵活处理数据结构至关重要。
|
3月前
|
容器
在使用指针数组进行动态内存分配时,如何避免内存泄漏
在使用指针数组进行动态内存分配时,避免内存泄漏的关键在于确保每个分配的内存块都能被正确释放。具体做法包括:1. 分配后立即检查是否成功;2. 使用完成后及时释放内存;3. 避免重复释放同一内存地址;4. 尽量使用智能指针或容器类管理内存。
|
3月前
|
存储 C语言 计算机视觉
在C语言中指针数组和数组指针在动态内存分配中的应用
在C语言中,指针数组和数组指针均可用于动态内存分配。指针数组是数组的每个元素都是指针,可用于指向多个动态分配的内存块;数组指针则指向一个数组,可动态分配和管理大型数据结构。两者结合使用,灵活高效地管理内存。
|
3月前
|
存储 NoSQL 编译器
C 语言中指针数组与数组指针的辨析与应用
在C语言中,指针数组和数组指针是两个容易混淆但用途不同的概念。指针数组是一个数组,其元素是指针类型;而数组指针是指向数组的指针。两者在声明、使用及内存布局上各有特点,正确理解它们有助于更高效地编程。
|
3月前
|
存储 人工智能 算法
数据结构实验之C 语言的函数数组指针结构体知识
本实验旨在复习C语言中的函数、数组、指针、结构体与共用体等核心概念,并通过具体编程任务加深理解。任务包括输出100以内所有素数、逆序排列一维数组、查找二维数组中的鞍点、利用指针输出二维数组元素,以及使用结构体和共用体处理教师与学生信息。每个任务不仅强化了基本语法的应用,还涉及到了算法逻辑的设计与优化。实验结果显示,学生能够有效掌握并运用这些知识完成指定任务。
81 4
|
3月前
使用指针访问数组元素
【10月更文挑战第31天】使用指针访问数组元素。
63 2
|
1天前
|
编译器 C++ 开发者
【C++篇】深度解析类与对象(下)
在上一篇博客中,我们学习了C++的基础类与对象概念,包括类的定义、对象的使用和构造函数的作用。在这一篇,我们将深入探讨C++类的一些重要特性,如构造函数的高级用法、类型转换、static成员、友元、内部类、匿名对象,以及对象拷贝优化等。这些内容可以帮助你更好地理解和应用面向对象编程的核心理念,提升代码的健壮性、灵活性和可维护性。
|
1天前
|
安全 编译器 C语言
【C++篇】深度解析类与对象(中)
在上一篇博客中,我们学习了C++类与对象的基础内容。这一次,我们将深入探讨C++类的关键特性,包括构造函数、析构函数、拷贝构造函数、赋值运算符重载、以及取地址运算符的重载。这些内容是理解面向对象编程的关键,也帮助我们更好地掌握C++内存管理的细节和编码的高级技巧。
|
1天前
|
存储 程序员 C语言
【C++篇】深度解析类与对象(上)
在C++中,类和对象是面向对象编程的基础组成部分。通过类,程序员可以对现实世界的实体进行模拟和抽象。类的基本概念包括成员变量、成员函数、访问控制等。本篇博客将介绍C++类与对象的基础知识,为后续学习打下良好的基础。