【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


相关文章
|
6天前
使用指针访问数组元素
【10月更文挑战第30天】使用指针访问数组元素。
18 3
|
5天前
使用指针访问数组元素
【10月更文挑战第31天】使用指针访问数组元素。
12 2
|
14天前
|
算法 索引
单链表题+数组题(快慢指针和左右指针)
单链表题+数组题(快慢指针和左右指针)
23 1
|
23天前
|
存储
如何使用指针数组来实现动态二维数组
指针数组可以用来实现动态二维数组。首先,定义一个指向指针的指针变量,并使用 `malloc` 为它分配内存,然后为每个子数组分配内存。通过这种方式,可以灵活地创建和管理不同大小的二维数组。
|
23天前
|
存储
如何通过指针数组来实现二维数组?
介绍了二维数组和指针数组的概念及其区别,详细讲解了如何使用指针数组模拟二维数组,包括定义与分配内存、访问和赋值元素、以及正确释放内存的步骤,适用于需要动态处理二维数据的场景。
|
23天前
|
存储 算法 C语言
C语言:什么是指针数组,它有什么用
指针数组是C语言中一种特殊的数据结构,每个元素都是一个指针。它用于存储多个内存地址,方便对多个变量或数组进行操作,常用于字符串处理、动态内存分配等场景。
|
29天前
魔法指针 之 二级指针 指针数组
魔法指针 之 二级指针 指针数组
16 1
|
1天前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
10 4
|
24天前
|
存储 编译器 对象存储
【C++打怪之路Lv5】-- 类和对象(下)
【C++打怪之路Lv5】-- 类和对象(下)
22 4
|
24天前
|
编译器 C语言 C++
【C++打怪之路Lv4】-- 类和对象(中)
【C++打怪之路Lv4】-- 类和对象(中)
20 4