`
tulunta
  • 浏览: 360406 次
文章分类
社区版块
存档分类
最新评论

数组与指针

 
阅读更多

数组

定义:在程序设计中,若把具有相同类型的若干变量按有序的形式组织起来,则这些按序排列的同类数据元素的集合称为数组。按数组元素的类型不同,又可分为:数值数组,字符数组,指针数组和结构数据等。

指针

作用C++拥有在运行时获得变量或对象的地址和通过地址操作数据的能力,而这种能力是通过指针来发挥的。

定义:用来存储数据地址的特殊变量,它本身也是一种类型。(注:指针变量在不致引起混淆的情况下也称指针)。

指针与数组

例:int* p; int a[10];

联系:如上例可以进行p=a;p=&a[0];对指针变量p初始化,使p指向数组的首个元素,从而a[i]*(p+i)等价。即:数组名相当于一个指针,表示(存储)数组的首址。

区别:指针是变量,可以进行数值运算.p++;而数组名是常量.a++,则错误。

指针数组与数组指针

区别

指针数组:数组元素均为指针的数组,本质是数组。

例,int* ptrArr[10]; //即数组元素ptrArr[0],ptrArr[1],ptrArr[2]等均为指针。

数组指针:指向数组首元素地址的指针----即指向数组的指针,本质是指针。

例,int(*arrPtr)[10]; //arrPtr为一个int(*)[10]型的指针,指向一个大小10元素int型的数组。

下面通过一段程序来说明:

#include<iostream>
usingnamespace std;
int main()
{
        char str1[4]={'1','2','3','\0'};
        cout<<"str1类型:     "<<typeid(str1).name()<<endl;
        cout<<"&str1类型:    "<<typeid(&str1).name()<<endl;
 
        char str2[2][4]={
               {'1','2','3','\0'}
               ,{'4','5','6','\0'}
        };
        cout<<"str2类型:     "<<typeid(str2).name()<<endl;
        cout<<"str2:          "<<str2<<endl; //第一个一维数组的首地址
        cout<<"str2+1:        "<<str2+1<<endl;
 
    cout<<"&str2类型      "<<typeid(&str2).name()<<endl;
        cout<<"&str2           "<<&str2<<endl;//整个二维数组的首地址
        cout<<"&str2+1         "<<&str2+1<<endl;
    cout<<"&str2[0]类型:  "<<typeid(&str2[0]).name()<<endl;
        cout<<"&str2[0]        "<<&str2[0]<<endl;
        cout<<"&str2[0]+1      "<<&str2[0]+1<<endl;
 
    cout<<"&str2[0][0]类型"<<typeid(&str2[0][0]).name()<<endl;
        cout<<"&str2[0][0]     "<<&str2[0][0]<<endl;
        cout<<"&str2[0][0]+1   "<<&str2[0][0]+1<<endl;
 
        return 0;
}


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics