C++ 指针与一维数组

上一章中, 已经谈到普通指针 (C风格) 的基础概念, 现在来介绍一下 数组与指针的联系

比如说我们现在声明一个数组:

#include <iostream>
using namespace std;
int main()
{
    int num[3];
    return 0;
}

这个num在内存中的状态是这样的:

一看一目了然! num完全就是指针!

也就是说, 数组就是指针 (指针不一定是数组, 不懂的看这里)

我们原来输入输出num是这个样子的:

#include <iostream>
using namespace std;
int main()
{
    int num[3];
    for(int i=0;i<3;i++)
        cin>>num[i];
    for(int i=0;i<3;i++)
        cout<<num[i]<<‘ ‘;
    return 0;
}

现在我们改一下, 如果看不懂请看这里:

 1 #include <iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int num[3];
 6     for(int i=0;i<3;i++)
 7         cin>>*(num+i);
 8     for(int i=0;i<3;i++)
 9         cout<<*(num+i)<<‘ ‘;
10     return 0;
11 }

两种方法是等效的, 看个人喜好

我们还可以继续更改, 直接以指针的方式出现:

#include <iostream>
using namespace std;
int main()
{
    int *num=new int[3];
    for(int i=0;i<3;i++)
        cin>>*(num+i);
    for(int i=0;i<3;i++)
        cout<<*(num+i)<<‘ ‘;
    delete[] num;//别忘了释放内存
    num=nullptr;
    return 0;
}

原文地址:https://www.cnblogs.com/tweechalice/p/11438017.html

时间: 2024-10-01 05:06:50

C++ 指针与一维数组的相关文章

C艺术篇 3-1 指针与一维数组(1)

我们先来看指针与一维数组的关系,例题如下: 从输出结果得知,arr是数组名,它是指针常量,而ptr是指针变量. arr表示此数组第一个元素的地址,即arr等同于&arr[0]. arr可以使用指针变量的*表示符号,如*arr等同于arr[0],*(arr+1)等同于arr[1],依次类推. 在2-1中介绍过 int *ptr = &x; 其实是下列两条语句的组合 int *ptr; ptr = &x; 可以理解为 ptr就是地址,当本题将数组地址给ptr时候, 把ptr当为数组,所

指针与一维数组和二维数组以及字符串指针数组的学习笔记

废话不多少,直接上代码,关键的东西已经注释了,看注释信息理解即可. 说明:本程序讨论了一维数组和指针的关系,谈论了二维数组和指针之间的关系,讨论了字符串数组指针数组和指针之间的关系,代码中以给出定义的方法和简单的使用,但是有些使用方法并没有列出,如果需要, 请自行加入printf调试即可. 转贴请注明出处,欢迎和我讨论,谢谢. ----------cofin_add #include <stdio.h> void fun(int m, char *((*p)[m])){ int i = 0;

指针与一维数组练习题01

编写一个程序,初始化一个double数组,然后把数组内容复制到另外两个数组(3个数组都需要在主程序中声明).制作第一份拷贝的函数使用数组符号.制作第二份拷贝的函数使用指针符号,并使用指针的增量操作.把目标数组名和要复制的元素数目做为参数传递给函数.也就是说,如果给定了下列声明,函数调用应该如下面所示: double  source [5]={1.1,  2.2,  3.3,  4.4,  5.5}; double  targetl[5]; double  target2 [5]; copy_ar

指针和一维数组-复习

# include<stdio.h> void f(int* parr,int len)//二个参数确定一个数组,第一:数组第一个元素的地址:parr,第 二:数组的长度:len { int i; for(i=0; i<len; ++i) { printf("%d ",*(parr + i));//*(parr + i)等价于parr[i] } } int main(void) { int a[5] = {1, 2, 3, 4, 5}; printf("%d

【C语言】12-指向一维数组元素的指针

一.用指针指向一维数组的元素 1 // 定义一个int类型的数组 2 int a[2]; 3 4 // 定义一个int类型的指针 5 int *p; 6 7 // 让指针指向数组的第0个元素 8 p = &a[0]; 9 10 // 修改所指向元素的值 11 *p = 10; 12 13 // 打印第一个元素的值 14 printf("a[0] = %d", a[0]); 输出结果:,说明已经通过指针间接修改了数组元素的值,跟指向一个普通int类型变量是一样的. 由于数组名代表

学习笔记之12-指向一维数组元素的指针

一.用指针指向一维数组的元素 1 // 定义一个int类型的数组 2 int a[2]; 3 4 // 定义一个int类型的指针 5 int *p; 6 7 // 让指针指向数组的第0个元素 8 p = &a[0]; 9 10 // 修改所指向元素的值 11 *p = 10; 12 13 // 打印第一个元素的值 14 printf("a[0] = %d", a[0]); 输出结果:,说明已经通过指针间接修改了数组元素的值,跟指向一个普通int类型变量是一样的. 由于数组名代表

【C语言】指向一维数组元素的指针

本文目录 一.用指针指向一维数组的元素 二.用指针遍历数组元素 三.指针与数组的总结 四.数组.指针与函数参数 前面我们已经学习了指针,如果指针存储了某个变量的地址,我们就可以说指针指向这个变量.数组及其数组元素都占有存储空间,都有自己的地址,因此指针变量可以指向整个数组,也可以指向数组元素. 回到顶部 一.用指针指向一维数组的元素 1 // 定义一个int类型的数组 2 int a[2]; 3 4 // 定义一个int类型的指针 5 int *p; 6 7 // 让指针指向数组的第0个元素 8

【C语言】-指向一维数组元素的指针

本文目录 一.用指针指向一维数组的元素 二.用指针遍历数组元素 三.指针与数组的总结 四.数组.指针与函数参数 说明:这个C语言专题,是学习iOS开发的前奏.也为了让有面向对象语言开发经验的程序员,能够快速上手C语言.如果你还没有编程经验,或者对C语言.iOS开发不感兴趣,请忽略 前面我们已经学习了指针,如果指针存储了某个变量的地址,我们就可以说指针指向这个变量.数组及其数组元素都占有存储空间,都有自己的地址,因此指针变量可以指向整个数组,也可以指向数组元素. 回到顶部 一.用指针指向一维数组的

指针知识梳理2-指针与一维数组

一.一维数组复习 数组的本质是连续的内存,我们可以通过一下代码验证. int main() { int a[10]; int i; for(i = 0;i<10;i++) { printf("%p\n",&a[i]); } } 打印出每个元素的地址,会发现地址间隔是4 ,这个间隔刚好等于sizeof(int). 那么如果知道了a[0]的地址,我们就可以通过地址的加减算出a[i]的地址,然后访问a[i]; 二.通过指针访问一维数组 指针能够访问一维数组的两个前提是: 1.内