• 数组类型和多维数组本质


    一.数组的概念

    1.概念 

    ①元素类型角度,数组是相同数据类型的变量的有序集合,测试指针变量占有内存空间大小。

    ②内存角度,联系的一大片内存空间。

    2.数组的初始化

    ①数组元素的个数可以显示或者隐式地指定。

    ②分析数组初始化【0】与memset的比较。

    1. int main()
    2. {
    3. int i=0;
    4. int a[10]={1,2};//其他初始化为0
    5. int b[]={1,2};
    6. int c[20]={0};//编译的时候就已经确定了所有的值为0
    7. for(i=0;i<10;i++)
    8. {
    9. printf("%d ",a[i]);
    10. }
    11. memset(a,0,sizeof(a));//显示的时候 重置内存块
    12. getchar();
    13. return 0;
    14. }

     3.数组名的技术盲点

    数组首元素的地址和数组地址是两个不同的概念。

    数组名代表数组首元素的地址,它是个常量

         解释如下:变量本质是内存空间的别名,一定义数组,就分配内存,内存就固定了,所以数组名起名以后就不能修改了。注意:类型的本质是固定大小内存块的别名。

    ③数组首元素的地址和数组的地址值相等。

    ④怎么样得到整个一维数组的地址?

    C语言规定:

    1. int a[10];
    2. printf("得到整个数组的地址a:%d\n",&a);
    3. printf("数组的首元素的地址a:%d\n",a);
    4. 怎么样表达int a[10]这种数据类型?

    二.数组类型,数组指针类型,数组指针类型变量

    1.数组类型

    ①数据类型分为基础、非基础,思考角度应该发生变化。

    ②C语言中的数组有自己特定的类型

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

    例如:int array[5]的类型为int[5].

    1. typedef int(MYINT5)[5];//int
    2. typedef float(MYFLOAT10)[10];
    3. //数组定义:
    4. MYINT5 Array;//int Array[5];
    5. MYFLOAT10 fArray;//float fArray[10];
    6. //怎么样表达int a[10]这种数据类型?int[]
    7. //类型的本质,固定大小内存的别名
    8. //定义数据类型
    9. void main()
    10. {
    11. typedef int(MyArrayType)[5];//定义了一个数据类型,数组数据类型
    12. MyArrayType myArray;//int myArray[5]
    13. for (int i = 0; i < 5; i++)
    14. {
    15. myArray[i] = i + 1;
    16. }
    17. for (int i = 0; i < 5; i++)
    18. {
    19. printf("%d ", myArray[i]);
    20. }
    21. printf("\n myArray代表数组首元素地址:%d myArray+1:%d \n", myArray, myArray + 1);
    22. printf("\n &myArray代表整个数组地址:%d &myArray+1:%d \n", &myArray, &myArray + 1);
    23. system("pause");
    24. return ;
    25. }

  • 相关阅读:
    OD试题(八)
    html form拼凑表单触发后端api
    stack和queue的使用和模拟实现
    dp入门30题
    掌握Maven和SpringBoot的灵活性:定制化lib目录和依赖范围
    QCC51XX---QACT用户指南
    2022 年你必须准备的 115 个 SQL 面试问题
    魔性洗脑神曲掀起模仿热潮,品牌为何热衷“打歌”?
    EMC-浪涌防护及退耦设计
    Django_学习_02
  • 原文地址:https://blog.csdn.net/Ha_Girl/article/details/125613158