c/c++:指针与数组

File : pointer and array.cpp
Type : c/c++
Brief : pointer and array


/*
int* a[4]   指针数组     
            表示:数组a中的元素都为int型指针    
            元素表示:*a[i]   *(a[i])是一样的,因为[]优先级高于*

int (*a)[4] 数组指针     
            表示:指向数组a的指针
            元素表示:(*a)[i]  
*/


#include <iostream>
using std::cout;
using std::endl;

int main()
{
    int a[5] = {1, 2, 3, 4, 5};     // int数组,元素是int数据

    int (*b)[5];                    // 数组指针
    b = &a;                         // 指向长度为4*5byte 的 int数组

    int* c[10];                     // 指针数组
    c[1] = new int[100];            // 元素 是 指针

    cout << (*b)[2] << endl;        // *b 是 数组首地址,则b 是二级地址,即二级指针
    cout << *((*b) + 1) << endl;

    cout << endl;
    cout << &a[0] << endl;     // 数组首元素a[0]的地址,即为数组首地址
    cout << a << endl;         // 数组名a为指针常量,其值为a[0]的地址
    cout << &a << endl;        // 对于数组名,&a操作符返回的数组指针(*)[5],不是二级指针
    cout << sizeof(a) << endl; // 对于数组名,sizeof操作符返回的数组的长度
    cout << b << endl;

    cout << endl;
    cout << a + 1 << endl;     // 步长为4byte(int)
    cout << &a[0] + 1 << endl; // 步长为4byte(int)
    cout << &a + 1 << endl;    // 步长为整个数组
    cout << b + 1 << endl;     // 步长为整个数组

    return 0;
}

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 [ yehuohan@gmail.com ]

文章标题:c/c++:指针与数组

本文作者:Y

发布时间:2017-08-09, 13:17:57

最后更新:2019-05-21, 20:06:11

原始链接:http://yehuohan.github.io/2017/08/09/Gist/c&c++/pointer-and-array/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。