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

    数组指针与指针数组都是数组的变形,看下面3个表示:

    1>    char   a[6]=“123456”;
    2>    char * a[6]={“12”,“34”,“56”,“78”,“910”,“1011”};
    3>    char(*a)[6];  char str[2][6]={"123456","234567"}; a=str;

    1中a是一个数组,是一个包含6个char型元素的数组,a是数组名。

    2中a是一个指针数组,首先它是一个数组。数组的元素是char型指针,这些指针指向字符串。

    3中a是一个数组指针,首先它是一个指针,a指针指向长度为6的char型数组。

    可以这么理解:

    1和2对比,相当于把 char 用char * 替换,本来a里面放着的是char,现在放着char*。

    1和3对比,相当于把 a换成*a,本来数组名是a,现在变成 *a,也就是一个指针了。

    是数组指针还是指针数组,关键看是a被替换了,还是char被替换了。a被替换了就变成指针,数组指针。char被替换了还是数组,只是放指针的数组。

    下面是一些代码:

    #include<iostream>
    using namespace std;
    int main(void)
    {
        char str[100]="I Love China!";
        cout<<"数组str:"<<str<<endl;
    
        char* a[3]={"I","Love","China!"};//指针数组,是一个数组,但是数组里面放的是指向char的指针
        cout<<"指针数组a是:";
        for(int i=0;i<3;i++)
        {
            cout<<a[i]<<" ";
        }
        cout<<endl;
    
        cout<<"数组指针指向的数组是:";
        char (*p)[6];//数组指针,是一个指针,指向长度为6的数组
        char s2[3][6]={"I","Love","china"};
        p=s2;
        for(int i=0;i<3;i++)
        {
            cout<<p[i]<<" ";
        }
        cout<<endl;
    
        getchar();
    }

  • 相关阅读:
    Arduino通信篇系列之print()和write()输出方式的差异
    通信协议之Modbus协议(一)
    CAD制图系列一之绘图、标注、修改、视图
    Arduino系列之pwm控制LED灯(呼吸灯)
    [转]GDB调试基础
    Linux上编辑然后执行一段脚本的机制
    [转]进程创建-终结流程图
    [ 转]Linux进程关系
    Linux进程管理(四、 进程终结)
    Linux进程管理(三、 线程)
  • 原文地址:https://www.cnblogs.com/qianwen/p/3839684.html
Copyright © 2011-2022 走看看