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

    1 int matrix[3][3];
    2 int* pm=matrix;

    数组类型:由数组元素的类型和数组的大小共同决定。

    int array[5];数组类型为:int[5] 表示5个连续的int类型空间

    定义数组类型:

    typedef type(name)[size]

    1 typedef int(INT5)[5];
    2 INT5 array 等价于 int array[5]

    数组指针:

    1、可以通过数组类型定义数组指针:

    1 int a[5];
    2 int* p=&a;

    再次强调:

    这里的a与&a虽然值相等,但是意义不同,a表示连续空间的第一个元素空间的地址;&a表示连续空间的地址,他们的区别体现在指针运算中:a+1与&a+1。

    *(p+1)=a[1]

    2、直接定义:

    int (*p)[5];
     1 #include <stdio.h>
     2 
     3 typedef int(AINT5)[5];
     4 typedef float(AFLOAT10)[10];
     5 typedef char(ACHAR9)[9];
     6 
     7 int main()
     8 {
     9     AINT5 a1;
    10     float fArray[10];
    11     AFLOAT10* pf = &fArray; //定义了数组指针:pf,指针类型:float* 。它指向float[10]类型数组,并初始化
    12     ACHAR9 cArray;
    13     char(*pc)[9] = &cArray; //定义了数组指针:pc,指针类型:char* 。它指向int[9]类型数组,并初始化
    14     char(*pcw)[4] = cArray; //定义了数组指针:pcw,指针类型:char* 。它指向char[4]类型数组,并初始化
    15     
    16     int i = 0;
    17     
    18     printf("%d, %d
    ", sizeof(AINT5), sizeof(a1)); //5*4
    19     
    20     for(i=0; i<10; i++)
    21     {
    22         (*pf)[i] = i; //(*pf)[1]=1:表示fArray[1]=1
    23     }
    24     
    25     for(i=0; i<10; i++)
    26     {
    27         printf("%f
    ", fArray[i]);
    28     }
    29     
    30     printf("%0X, %0X, %0X
    ", &cArray, pc+1, pcw+1);
    31 }

    指针数组:

    指针数组中每个元素为一个指针:

    float* a[3];表示定义了float*类型的三个指针变量

    内在的趣味,表面的繁琐
  • 相关阅读:
    ThreadLocal
    mysql
    heroku 的用法
    Redis
    disruptor
    RxJava
    TCP
    虚拟机的安装及配置等
    k8s
    Ribbon源
  • 原文地址:https://www.cnblogs.com/data1213/p/4826336.html
Copyright © 2011-2022 走看看