指针和数组的比较

来源:互联网 发布:java数组转换成字符串 编辑:程序博客网 时间:2024/04/29 00:41
  • 一.指针和数组的初步了解
    • 什么是指针
      在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,
      它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通
      过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将
      地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。
    • 什么是数组
      数组就是一段连续可用的内存。

指针

int main(){    int a = 10;    int* pa = &a;    return 0;}

通过这个程序我们可以发现,先定义一个整形变量a,然后定义一个整形指针变量pa来指向a。通过对程序进行运行,我们找到内存中变量a,&a找到a,发现a存储在为0x0031FC80地址中。
这里写图片描述
然后我们在以相同的方式找到指针变量pa。
这里写图片描述
我们不难发现,指针pa保存的是指向a的地址。如图所示
这里写图片描述

在通过下一个程序进行比较

int main(){    char b = 'a';    char* pb = &b;    return 0;}

这次定义的是一个字符型变量b,在定义一个字符变量的指针用来指向他。打开内存&b,这次b所占字节为1。
这里写图片描述
然后&pb,我们发现不同的是,pb所占内存为4个字节。
这里写图片描述
如图所示
这里写图片描述
我们把 pa、pb称为指针变量,指针里存储的内存地址处的内存称为指针所指向的内存。指针变量里存储的任何数据都将被当作地址来处理。我们可以简单的这么理解:一个基本的数据类型(包括结构体等自定义类型)加上“”号就构成了一个指针类型的模子。这个模子的大小是一定的,与“”号前面的数据类型无关。“*”号前面的数据类型只是说明指针所指向的内存里存储的数据类型。所以,在 32 位系统下,不管什么样的指针类型,其大小都为 4byte。只是其一次能够访问的长度为类型的长度。

数组

1.一维数组

int main(){    int a[5] = {1,2,3,4,5};    int i = 0;    for (i = 0; i < sizeof(a)/sizeof(a[0]); i++)    {        printf("a[%d]=%p\n", i, &a[i]);    }    return 0;}

通过对程序运行
这里写图片描述

这里写图片描述

通过图示,我们知道一维数组在内存中的分布。
这里写图片描述

2.二维数组

int main(){    char a[3][4] = {'a','b','c','d','e','f','g','h','i','j','k','l'};    int i = 0;    int j = 0;    for (i = 0; i < 3; i++)    {        for (j = 0; j < 4; j++)        {            printf("a[%d][%d]=%p\n", i,j, &a[i][j]);        }    }    return 0;}

通过对代码的运行。
这里写图片描述

这里写图片描述

通过图示,我们知道二维数组在内存中的分布。
这里写图片描述

  • 二. 指针和数组的区别
指针 数组 保存数据的地址 保存数据 间接访问数据,首先取得指针内容,把他作为地址然后从这个地址提取数据。如果指针有一个下标[I],就把指针的内容加上I作为地址,从中提取数据 直接访问数据,a[I]只是简单地以a-I为地址取得数据
    如有错误,欢迎指出!
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 外地户口上高中怎么办 数学思维反应慢怎么办 不小心逆行了怎么办 格力手机老卡顿怎么办? 华为3g手机充不上电怎么办 外地上成都牌照怎么办 小汽车牌照坏了怎么办 买车上郑州牌照怎么办 汽车前牌照丢失怎么办 有人套我车牌怎么办 在本地怎么办外地车牌 二手车卖了车牌怎么办 科目四预约失败怎么办 车子过户了车牌怎么办 检车没有保险怎么办 异地超速12分怎么办 驾驶证考试过期了怎么办 买了库存车怎么办 车龄长了油耗高怎么办 新车发现补过漆怎么办 魅蓝note3内存不足怎么办 汽车安全检测证怎么办 a证被扣12分怎么办 突发事作后事故单位怎么办 如果遇到突发事故怎么办? 班级遇到突发事故怎么办 高速上出车祸怎么办? 安卓车载中控大屏卡怎么办 车辆交通信息卡怎么办 成都焊工压力容器证怎么办 天车钢丝绳绞住怎么办 受伤了怎么办安全教案 复读后学籍档案怎么办 开车就是开不好怎么办 货车提不了档案怎么办 二手车档案丢了怎么办 车辆档案丢了怎么办 手续跟车都丢了怎么办 二手车无法核档怎么办 高尔夫6天窗漏水怎么办 司机违章辞职了怎么办