首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C语言定义数组时使用枚举作为数组下标

通常情况下定义数组都是顶一个什么类型的数组然后下标或者脚标就是从0开始++++ int array[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; 但是用0-N这种整形数字做下标可读性非常不高...,如果这个数组里保存的数据比较复杂,那么这种硬编码的下标方式非常的危险。...所以这里通常都使用枚举变量作为下标来访问数组。...如下“` static char* language_type_data[] = { "Chinese", "German", "American" }; 这里定义了一个字符指针型数组,用来保存语言类型...为了避免这种隐患可以在定义数组时候使用枚举作为数组下标,这样即使数据输入混乱,但是只要数组定义时候枚举下标定义和数组成员可以对应正确就可以避免这种错误。

3.4K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C语言定义数组时使用枚举作为数组下标 ——c99功能

    在ANSI的标准确立后,C语言的规范在一段时间内没有大的变动,然而C++在自己的标准化创建过程中继续发展壮大。...《标准修正案一》在1994年为C语言创建了一个新标准,但是只修正了一些C89标准中的细节和增加更多更广的国际字符集支持。不过,这个标准引出了1999年ISO 9899:1999的发表。...例如: 宏支持可变参数 #define Macro(...) __VA_ARGS__ 使用宏的时候,允许省略参数,被省略的参数会被扩展成空串。...允许采用(type_name){xx,xx,xx} 类似于 C++ 的构造函数的形式构造匿名的结构体。...为了避免这种隐患可以在定义数组时候使用枚举作为数组下标,这样即使数据输入混乱,但是只要数组定义时候枚举下标定义和数组成员可以对应正确就可以避免这种错误。

    1.2K60

    C 语言数组 ( 多维数组操作模型 | 某个数组元素地址 | 某个数组元素值 )

    文章目录 一、多维数组操作模型 1、取出某个数组元素地址 2、取出某个数组元素值 总结 一、多维数组操作模型 ---- 以 // 声明一个多维数组 int array[2][3]; 二维数组为例...行 , 第 1 列 元素变量 , 地址 , 就是该变量的地址 , 也就是 第 0 行 , 第 1 列元素的地址 ; 第 i 行 , 第 j 列 元素地址 : array[i]...元素变量 , 地址 , 就是该变量的地址 , 也就是 第 i 行 , 第 j 列元素的地址 ; 2、取出某个数组元素值 取出某个元素值 , 就是在上面的 " 第 i 行 , 第 j...列 元素地址 " 基础上 , 加上 * 该地址对应的值 ; 第 i 行 , 第 j 列 元素值 : *(array[i] + j) *(*(array + i) + j) ; a[i][j]...; 总结 上述不同操作的由来 , 就是因为 , 数组 既可以使用 [] 下标的方式访问 , 又可以使用 指针 * 符号访问 ; 二维数组中 , 还可以使用 [] 符号访问一维数组 , 之后再使用 *

    6.4K10

    C语言整&4种函数】详解

    01  【整】 关于"整"这个词似乎我们既熟悉又会感到陌生,熟悉是因为我们在编程的时候经常会用到整。 陌生是因为又没有好好深度理解过这整,那么接下来就围绕整作为一个探讨。...总结:【C语言整默认采用的是"0向整"。...02  【trunc - 0向整】 trunc 的头文件是 :#include 注意:对于「C语言」来说它实际上是有一个函数的,相信很多小伙伴们是不知道「C语言」有这个trunc函数的...2d\n", (int)trunc(2.99)); printf("%2d\n", (int)trunc(-2.99)); return 0;} 运行结果:2 -2 2 -2 注意:这里我们需要注意函数的返回值都是浮点类型...说明:在C语言当中默认采用的是0向整的方式来进行的。

    3.2K30

    7.3 C语言数组作为函数参数

    01数组元素作函数实参 1、数组元素可以用作函数实参,不能用作形参。 2、在用数组元素作函数实参时,把实参的值传给形参,是“值传递”方式。 3、数据传递的方向是从实参传到形参,单向传递。...02 数组名作函数参数 1、除了可以用数组元素作为函数参数外,还可以用数组名作函数参数。...2、用数组元素作实参时,向形参变量传递的是数组元素的值,而用数组名作函数实参时,向形参传递的是数组首元素的地址。 3、用数组名作函数参数,应该在主调函数和被调函数分别定义数组。...4、实参数组与形参数组类型应一致,如不一致,结构出错。 5、形参数组可以不指定大小,在定义数组时在数组名后面跟一个指针变量,用来接收一个地址。...C语言 | 统计捐款人数及人均捐款数 更多案例可以go公众号:C语言入门到精通

    2.7K2927

    C语言』深度走入整 & 4种函数

    Hello謓泽多多指教 前言 整 ⒈trunc - 0向整 ⒉floor -地板整 ⒊ceil-无穷大整 ⒋round-四舍五入 前言 这篇博客就带大家深度理解以下什么是整。...总结⇢「C语言整默认采用的是"0向整"。...⒈trunc - 0向整 trunc 的头文件是 ⇢ #include 拓展知识点⇢对于「C语言」来说它实际上是有一个函数的相信很多小伙伴们是不知道「C语言」有这个trunc函数的...)trunc(2.99)); printf("%2d\n", (int)trunc(-2.99)); return 0; } 运行结果  2 -2  2 -2 注⇢这里我们需要注意函数的返回值都是浮点类型...,如果你是用整形打印的话你需要把类型进行强转成(int) 说明⇢在C语言当中默认采用的是0向整的方式来进行的。

    58030

    C语言数组作为函数参数-学习十九

    数组元素作函数实参 数组元素就是变量,它与普通变量并无区别。因此它作为函数实参使用与普通变量是完全相同的, 在发生函数调用时,把作为实参的数组元素的值传递给形参,实现单向的值传送。...= large(a[i], b[i]); if (c == 1) { v++; } else if (c == -1) {...除了可以用数组元素作为函数参数外,还可以用数组名作函数参数(包括实参和形参)。...2.在普通变量或下标变量作函数参数时,形参变量和实参变量是由编译系统分配的两个不同的内存单元。 在函数调用时发生的值传送是把实参变量的值赋予形参变量。...用多维数组名作函数参数 多维数组元素与一维数组元素一样,可以看作一个变量,所以在调用函数时可以作为实参,进行值的传递。

    1.7K20

    C语言数组作为函数参数「建议收藏」

    一:数组元素作为函数的实参 数组元素就是变量,与普通变量没有区别,将数组元素传送给形参,实现单向的值传递。...:%d",m); } 二:数组名作为函数的实参 实质是地址的传递,将数组的首地址传给形参,形参和实参共用同一存储空间,形参的变化就是实参的变化。...:"); for(int i = 0;i < 10; i ++){ scanf("%d",&a[i]); } printf("排序后的数组顺序是:"); sort(a,10); for(int...i = 0; i < 10; i++){ printf("%d ",a[i]); } } 三:二维数组名作为函数参数 第一维的大小可以不指定,第二维的大小必须指定。...实参传送的是二维数组的首地址,使得二维数组a与b共用同一存储单元,即a[0][0]与b[0][0]共用同一存储单元,a[0][1]与b[0][1]共用同一存储单元。

    1.6K10

    详解C语言指针函数函数指针、函数指针数组「建议收藏」

    C语言中,指针是一个很重要但是又很容易弄错的概念,也可以说指针就是C语言的灵魂,所以说学好指针对于完全掌握C语言是一个必须的过程。...而在指针中,指针函数函数指针、指针函数数组函数指针数组、指向函数指针数组的指针等等概念看着又绕又头疼。本问总结了一下以上一些概念以及用法,并给出例程深化理解。 1....函数指针数组 顾名思义,就是每个元素都是函数指针的数组,直接在函数指针名后面加上数组符号[ ]即可。...C语言函数不可以定义为数组,只能通过函数指针来操作定义函数指针数组。 5....,而void(* )( )表示函数指针,两者结合起来就是指向函数指针数组的指针。

    1.7K20

    Elasticsearch 8.X 可以按照数组下标数据吗?

    1、线上环境问题 老师、同学们,有人遇到过这个问题么,索引中有一个 integer 数组字段,然后通过脚本获取数组下标为1的值作为运行时字段,发现返回的值是乱的,并不是下标为1的值, 具体如下: DELETE...例如,假设你有以下文档: { "tags": ["A", "B", "C"] } Elasticsearch会像你分别为文档添加了三个标签"A"、"B"和"C"一样对待它。...这对于复杂的对象数组非常有用,但同时也带来了一些复杂性,如使用特定的 nested 查询和聚合。 3、如何获取指定下标的数据? 3.1 方案一、微小改动。...如果所有这些条件都满足,脚本会遍历数组并为数组中的每个元素创建一个新字段。新字段的名称将是 price_0、price_1等,其中的数字是数组的索引。...首先,我们必须理解 Elasticsearch 不是以传统的方式存储数组,而是将每个元素视为独立的值。因此,我们不能简单地通过下标直接访问数组中的某个特定元素。

    32110

    c语言 数组存放规则,C语言数组详解

    下标表示了元素在数组中的顺序号。数组元素的一般形式为: 数组名[下标] 其中的下标只能为整型常量或整型表达式。如为小数时,C编译将自动整。...例如,a[5],a[i+j],a[i++]都是合法的数组元素。 数组元素通常也称为下标变量。必须先定义数组, 才能使用下标变量。在C语言中只能逐个地使用下标变量, 而不能一次引用整个数组。...在下标变量中使用了表达式i++,用以修改循环变量。当然第二个for语句也可以这样作, C语言允许用表达式表示下标。...程序中最后一个printf语句输出了两次a[5]的值, 可以看出当下标不为整数时将自动整。数组的赋值给数组赋值的方法除了用赋值语句对数组元素逐个赋值外, 还可采用初始化赋值和动态赋值的方法。...二维数组 前面介绍的数组只有一个下标,称为一维数组, 其数组元素也称为单下标变量。在实际问题中有很多量是二维的或多维的, 因此C语言允许构造多维数组

    6.2K30

    C语言系列】C语言数组

    Int x[]={1,2}; Char ca[5]={‘a’,‘A’,‘B’,‘C’,‘D’}; 数组名即代表数组的地址,数组的地址==数组名(ca)==数组的首元素的地址&ca[0] 在内存中,内存从大到小进行寻址...0; } Array数组与ages数组的地址一致,若以数组作为函数的参数,这种传递方式是传址调用,传递的是整个数组的地址,修改形参数组元素的值,就是修改实参的值。...当你把一个数组当做参数来传递时,它会看做是一个指针,在该函数体内使用sizeof运算符来计算数组的长度,得出的数值永远为8,而非数组的实际长度,因为任何类型的指针都占8个字节的存储空间。...提示:数组作为一个函数的参数时,如果函数体涉及到数组遍历等操作,通常把数组的实际元素个数也作为参数传递给函数。...使用场合:五子棋,俄罗斯方块等, 假设: char Y[3][2]={ {‘A’,‘B’}, {‘C,‘D’}, {‘E,‘F’} }; 内存情况: ?

    28.6K62

    C语言数组

    C 语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。...声明数组C 中要声明一个数组,需要指定元素的类型和元素的数量,如下所示: type arrayName [ arraySize ]; 这叫做一维数组。...arraySize 必须是一个大于零的整数常量,type 可以是任意有效的 C 数据类型。...初始化数组C 中,您可以逐个初始化数组,也可以使用一个初始化语句,如下所示: double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0}; 大括号 { }...访问数组元素 数组元素可以通过数组名称加索引进行访问。元素的索引是放在方括号内,跟在数组名称的后边。

    5K10

    C语言------数组

    ,可以是char、short、int 、float arr_name指的是数组的名字 [ ]中的常量值是用来指定数组的大小,根据实际需要来定义 数组是不需要地址的 //type arr_name /..., scanf_s("%d ", &arr[i]);//arr[i]是整型元素,需要地址,数组名才是地址 } for (i = 0; i < 10; i++)...个位上的c+4等用于12+4=16,满16进一,1+6=7,所以6c+4=70 所以上述的数组的地址都只相隔4 1个int类型的字节占4个字节 得出结论: 1.数组在内存中是连续存放的 2.随着数组下标的增长...,列不能省略 int date[][5] = {{1,2},{3,4},{5,6}}; 二位数组的使用 数组名是地址 c语言默认行和列默认从0开始的 int arr[3][5] = {1,2,3,4,5... int main() { //char arr[] = "abc"; //a b c \0 //0 1 2 3对应的下标,最右边的结尾c所对应的下标应该-1

    1400
    领券