zoukankan      html  css  js  c++  java
  • 我也要学C语言第十七章:指针数组

    指针数组的定义

      如果数组的元素都是指针类型,那么我们就把这种叫做指针数组。指针数组是如下定义的:

      类型名字  *数组名[常量表达式]

      我们以前学习的时候知道如果数组的元素如何是char型,那么这个就是char型数组,如何数组元素都是int型,那么这个就叫int型数组,在这里呢,如果数组元素都是指针,那么这个就是指针数组。

      大家发现没有,指针数组也没有什么特别的,只是它的元素都是指针。那么我们在使用它的时候就和其他整型数组没有太大的区别。

    例子:  int *x[10]

      通过前面的解释,那么我很容易回到道这个是表示,x是一个数组,里面有10个元素,每个元素是一个指针指向整型。嘿嘿!是不是很简单啊!原来就是把指针放数组里啦!就好比以前“串串香竹签”上的土豆编程了指针了。指针是一种抽象,在计算机中用来表示地址加其解释方式。

      那么我们现在思考一个问题啊,这个int *x[10]求长度会是多少呢,嘿嘿!聪明的你1下子就想到了,指针嘛!在32位系统中是4字节的,那么这里有10个,那就是40字节啦!

    指针数组的主要应用

      指针数组从它的定义我们便知道它是主要用来管理同种类型的指针,其实最常见的就是用来管理字符串。

      现在呢,我们还是老办法,先看指针数组的内存形式,这样我们再应用就会思路更清晰啦!

    大家是不是觉得指针数组很好玩啊!aString数组里面放的3个4字节指针啦!。大家一定要注意啊,上面的和 char aString[]="............" 这样的形式是不一样的啊,这种形式是把字符串放在数组里的哦!指针数组中数组里放的只是指针哦!是指向字符串的指针,也就是字符串的首地址。那么我们现在去看看真正的字符串在哪里啊,嘿嘿,大家一看地址就知道啦,第一个字符串的地址是00422080啊,然后依次挨着放的。好,我们去那个地址看看,到底是不是这样啦!

    呵呵!大家看到了吧!数组里面全部是记录的指针吧!

    一个很必要的对比

      下面大家来看1个例子,我们来仔细分析下:

    #include <stdio.h>

    void main()
    {
    char*aStringA[]=
    {
    "I'm not afraid to take a stand",
    "We'll walk this road together, through the storm",
    "Whatever weather, cold or warm"
    };

    char aStringB[][60]=
    {
    "I'm not afraid to take a stand",
    "We'll walk this road together, through the storm",
    "Whatever weather, cold or warm"
    };

    }

    对于这个例子呢!如何输出的话。2个结果都一样的!但是它们有什么区别呢?!大家好好回忆下我之前的笔记,然后我们做以下区别的总结:

    1,第一个数组字符串在常量区,第二个数组字符串在栈区。

    2,第一个数组的长度是12字节,第二个数组长度是180字节。

    3,第一个数组就像高级语言的变长数组,第二个数组就相当于定长数组拥有很快的寻址能力

    4,第一个数组做元素交换很方便,只需要交换指针。第二个数组做交换就得把整个元素都抄下来然后交换

     

  • 相关阅读:
    Android四大组件之BroadcastReceiver
    Android四大组件之Activity详解
    2017-2018-1 20155307 《信息安全系统设计基础》第十周课上未完成补充以及课下IPC作业
    第八周课上额外项目:pwd的实现
    20155307《信息安全系统设计基础》第9周学习总结
    2017-2018-11 20155307刘浩 20155338常胜杰 20155335俞昆 实验三 实时系统实验报告
    20155307 刘浩 信息安全技术(李冬冬) 实验三 数字证书应用 实验报告
    2017-2018-1 20155307 《信息安全系统设计基础》第七周学习总结
    实验二 20155307 20155335 20155338 实验报告 固件程序设计
    (完整!)2017-11-1 第七次 信息安全系统设计基础课 主要内容
  • 原文地址:https://www.cnblogs.com/dodolook/p/2089252.html
Copyright © 2011-2022 走看看