zoukankan      html  css  js  c++  java
  • 数组的本质

    数组的概念

    数组是相同类型的变量的有序集合

    数组的大小

    • 数组在一片连续的内存空间中存储元素
    • 数组元素的个数可以显示或隐式指定

    例子1:数组的初始化

    #include<stdio.h>
    int main()
    {
    	int a[5] = {1,2};
    	int b[] = {1,2};
    	
    	printf("a[2] = %d
    ",a[2]);
    	printf("a[3] = %d
    ",a[3]);
    	
    	printf("sizeof(a) = %d
    ",sizeof(a));
    	printf("sizeof(b) = %d
    ",sizeof(b));
    
    	return 0;
    }
    

    数组地址与数组名

    • 数组名代表数组首元素的地址
    • 数组的地址需要用取地址符&才能得到
    • 数组首元素的地址值与数组的地址值相同
    • 数组首元素的地址与数组的地址是两个不同的概念

    数组名的盲点

    • 数组名可以看做一个常量指针
    • 数组名“指向”的是内存中数组首元素的起始位置
    • 数组名不包含数组的长度信息
    • 在表达式中数组名只能作为右值使用
    • 只有在下列场合中数组名不能看做常量指针
      • 数组名作为sizeof操作符的参数
      • 数组名作为&运算符的参数

    例子2:数组和指针的不同

    #include<stdio.h>
    
    int main()
    {
    	int a[5] = {0};
    	int b[2];
    	int* p = NULL;
    	
    	p = a;
    	
    	printf("a = %p
    ",a);
    	printf("p = %p
    ",p);
    	printf("b = %p
    ",b);
    
    	return 0;
    }
    

    小结

    • 数组是一片连续的内存空间
    • 数组的地址和数组首元素的地址意义不同
    • 数组名在大多数情况下被当成常量指针处理
    • 数组名其实并不是指针,不能将其等同于指针
  • 相关阅读:
    埃尔多安回击“穆斯林都是恐怖分子”:坏人也可能是基督徒或犹太人
    通信行业并非那么”腹黑“
    苹果无人驾驶技术专家遭大众挖角
    数据结构之数组定义及基本操作(转)
    LCD浮点数显示函数的探讨
    C 数据类型
    C 基本语法
    C 标准库
    C 语言实例
    C 语言实例
  • 原文地址:https://www.cnblogs.com/yanyun888/p/9213161.html
Copyright © 2011-2022 走看看