zoukankan      html  css  js  c++  java
  • C语言之一维数组与指针

    一维数组:

    假如有一维数组如下:

    char a[3];

    该数组有3个元素,数据类型为char型,地址空间如下。

    如果想访问数据,直接使用a[0]、a[1]、a[2]取出相应地址空间的值即可

    一级指针:

    指针即地址,char *b即定义一个指向char型数据的指针,int *b即定义一个指向int型数据的指针。

    int a=5;
    int *b=&a;

    例子解析:定义一个int型数据a,值为5,定义一个指向int型的指针b,b的值为a的地址。使用*b就是b指向地址的值。地址空间如下。

    二级指针:

    二级指针即指向指针的指针,

    int a=5;
    int *b=&a;
    int **c=&b;

    例子解析:定义一个int型数据a,值为5,定义一个指向int型的指针b,b的值为a的地址。使用*b就是b指向地址的值。定义一个指向指针的指针c,c的值为b的地址,*c就是b的值,也就是a的地址,**c就是a的值,地址空间如下。

    一维数组与指针:

    数组其实就是一段连续空间的数据,指针可以随意指向某个地址,再读取该地址的值。

    int a[3];
    int *b=a;
    int *c=&a; //错误
    int (*c)[3]=&a; //正确
    int *d=&a[0]; int *e=&a[1]; int *f=&a[2];

    例子解析:

    1. 定义一维数组a[3],在例子中,a、&a、&a[0]的值虽然都是一样,但是意义不一样。a代表a[3]这个数组,也是a[3]的起始地址。&a就是取a[3]的起始地址。&a[0]就是取数组第一个元素的地址。

    2. 例子中,使用int *c=&a是错误的,因为a的数据类型是int (*)[3],而不是int *,所以必须以int (*c)[3]=&a。

    3. 定义了int (*c)[3]=&a,可以使用(*c)[0]取得a[0],(*c)[1]取得a[1],(*c)[2]取得a[2]。

     

  • 相关阅读:
    window.history.go()返回上页的同时刷新"上页"代码
    技术总监谈好的程序员如何写代码
    ASP长文章内容自动分页函数
    ie8下overflow:hidden 无效果
    EXCEL转数据到SQL(已有表结构)
    十六进制转十进制 这么简单 之前都不会
    获得表信息 字段名等
    aspjpeg 打水印
    《几何与代数导引》例2.9
    《几何与代数导引》例2.8
  • 原文地址:https://www.cnblogs.com/hwli/p/10744237.html
Copyright © 2011-2022 走看看