• 多维数组


    C语言中数组是元素类型相同的变量的集合,从内存角度来看是一大段连续的内存空间。

    在使用数组之前,一个好的习惯是通过memset函数对数组的内容进行初始化。相当于是重置内存块,这种方式和将数组初始化赋值为0是不一样的,第一种是显示的进行,第二种是通过编译器来进行的操作,在编译阶段才将数组中的元素全部置为0,相比较是第二种要快一点了。

    数组首元素地址和数组元素地址是不同的。数组名表示数组元素首地址,数组名取地址表示的是整个数组的首地址,在同时进行+1操作的时候带来的效果是不同的。

    这些是C语言规定的内容。

    数组名代表数组首地址,是一个常量,最根本的目的是为了在释放内存空间的时候可以找到这个内存地址。

    数组首元素地址和整个数组地址是相同的。

    如何表达数组这个数据类型。

    数组是非基础的数据类型,思考应该发生变化。

    数据的类型是由元素的类型+数组的大小所决定的。

    在C语言中如何定义一个数组类型呢?

    在C语言中使用typedef int(myint) [5];这样就定义了一个类型,名称为myint,大小为5个int的大小的内存块。这样就抽象了一个数据类型,这个数据类型是数组数据类型。

    这里仅仅相当于是一个变量名称,接下来还需要进行内存的初始化。具体的操作方式和数组的操作方式是相同的。包括赋值操作和打印出来的操作都是和当成整个数组是一样的。

    数组类型指针,就是定义一个指针,指向这个数组。

    指针数组,就是一个数组,里面放置的数据是指针。

    数组指针,就是一个指针,来指向一个数组。

    就是定义对应类型的指针变量指向对应的数据类型。

    不管怎样,指针都是4个字节的变量在32位的机器上面。

    定义数组指针的第二种方法就是,定义一个对应的数组指针类型,用这个指针类型来定义变量。

    第三种:

    直接定义一个指向数组的指针变量。

    多维数组做函数参数,为什么会存在退化?

    数组类型,数组指针类型,数组指针类型变量。函数数据类型,怎么定义函数变量,定义函数类型的指针。

    为什么要讲数组类型,数组指针类型,通过这两种类型定义数组指针类型的变量?

    指针和多维数组名在本质上的联系:

    多维数组名代表什么意思?

    多维数组名相当于是一个数组指针,对于一个int arr[3][5] 类型的多维数组,arr+1会跳过20个字节,相当于是有一个指针变量来一下子跳过了20个字节

    多维数组名和一个指向同大小的数组类型的变量是一致的。

    多维数组名的本质是,一个数组指针,每次往后跳就跳1维数组的长度。可以从步长的角度来进行理解,步长就是1维的长度。

    多维数组名本身也是多级指针,一定要明确是几级指针。

    多维数组名的本质,是一个指向一维数组的指针。

    多维数组做函数参数的退化问题。

    一维数组做函数参数会退化为一个一维指针。

    在多维数组中同样存在一个退化问题。

    C语言中只会以机械式的值方式传递参数。C语言是高效的。

    指针数组的应用场景。

  • 相关阅读:
    HIVE 技巧积累之合并重叠日期
    记一次hive版本升级
    【转】elasticsearch中字段类型默认显示{ "foo": { "type": "text", "fields": { "keyword": {"type": "keyword", "ignore_above": 256} }
    【转】深入理解Linux修改hostname
    VMware中 CentOS7挂载windows共享文件夹
    Apache版hadoop编译
    No route info of this topic
    java遍历文件夹及所有子文件
    关闭spring整合kafka时,消费者一直打印kafka日志
    (转)详解shell中>/dev/null 2>&1到底是什么
  • 原文地址:https://www.cnblogs.com/andyniu/p/7625569.html
Copyright © 2020-2023  润新知