zoukankan      html  css  js  c++  java
  • C/C++ 数组与指针

    数组

    数组名

    数组是内存连续的,数组名代表数组首地址。

    代码如下:

    int a[]={2,3,4,5,12,33};

    数组名a表示当前数组的首地址,但是a[0]就不是地址,这一点很不同。

    对于地址,可以使用+号进行运算,比如a+2,表示地址向前偏移两个位置,即等价于&a[2],因此,对于数组遍历,有两种方式

    第一种:使用常规的a[0],a[1],a[2]...进行遍历

    第二种:使用地址进行遍历,代码如下:

    int a[]={2,3,4,5,12,33};
    for(int i=0;i<6;i++)
    {
        cout<<*(a+i)<<endl;
    }

    采用地址运算和后续的指针操作有关联,加强敏感性。

    指针

    指针和一维数组的操作

    前面记录着,数组名代表一个数组的首地址,因此,可以将数组名赋值给一个指针,代码如下:

    int a[]={2,3,4,5,12,33};
    int *p=a;

    int *p:表示一个指向整型数的指针,虽然a代表数组首地址,但是它也相当于&a[0],即a[0]的地址,其指向的还是一个整型数,因此,两者可以赋值

    前面,我们也可以看出,地址是可以进行运算的,因此,指针p也可以进行运算,代码如下:

    int main(){
        int a[]={2,3,4,5,12,33};
        int *p=a;
       while(*p!=0)
        cout<<*p++<<endl;
    }

    指针和字符串数组

    字符串数组和前面的整型数组相同,也是一个数组,只是数组内容是字符,因此可以类比。

    char string[]="hello world";
    char *p=string;

    字符串指针p实际存放的是字符串string的首地址,等效于&string[0]。

  • 相关阅读:
    [洛谷P4725]【模板】多项式对数函数
    [洛谷P4841]城市规划
    [洛谷P4346][CERC2015]ASCII Addition
    [洛谷P3978][TJOI2015]概率论
    [洛谷P4656][CEOI2017]Palindromic Partitions
    [洛谷P4889]kls与flag
    [洛谷P3810]【模板】三维偏序(陌上花开)
    [洛谷P2613]【模板】有理数取余
    [bzoj4945][Noi2017]游戏
    [洛谷P4151][WC2011]最大XOR和路径
  • 原文地址:https://www.cnblogs.com/tinaluo/p/11149631.html
Copyright © 2011-2022 走看看