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

C90 -在全局和函数范围内初始化数组

C90是C语言的一个标准,指的是ISO/IEC 9899:1990标准,也被称为C89。该标准规定了C语言的语法和语义。

在C90标准中,数组的初始化可以在全局和函数范围内进行。数组是一种存储相同类型数据元素的连续内存空间的数据结构。

在全局范围内初始化数组时,可以使用以下语法:

代码语言:c
复制
type name[size] = {value1, value2, ...};

其中,type表示数组元素的数据类型,name表示数组的名称,size表示数组的大小,value1、value2等表示要初始化的数组元素的值。

在函数范围内初始化数组时,可以使用以下语法:

代码语言:c
复制
type name[size] = {value1, value2, ...};

同样,type表示数组元素的数据类型,name表示数组的名称,size表示数组的大小,value1、value2等表示要初始化的数组元素的值。

数组的初始化可以帮助我们在定义数组的同时为其赋初值,提高代码的可读性和可维护性。

以下是一个示例:

代码语言:c
复制
#include <stdio.h>

int globalArray[5] = {1, 2, 3, 4, 5};

void initializeArray() {
    int localArray[3] = {6, 7, 8};
    
    // 输出全局数组的元素
    for (int i = 0; i < 5; i++) {
        printf("%d ", globalArray[i]);
    }
    printf("\n");
    
    // 输出局部数组的元素
    for (int i = 0; i < 3; i++) {
        printf("%d ", localArray[i]);
    }
    printf("\n");
}

int main() {
    initializeArray();
    return 0;
}

输出结果为:

代码语言:txt
复制
1 2 3 4 5
6 7 8

在这个示例中,我们在全局范围内初始化了一个名为globalArray的整型数组,并在函数initializeArray中初始化了一个名为localArray的整型数组。然后,我们分别输出了这两个数组的元素。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

深入解构iOS系统下的全局对象初始化函数

只要任何一个C++类定义了构造函数或者析构函数,那么在对象创建时总是会调用构造函数,并且在对象销毁时会调用对应的析构函数。那么全局对象的构造函数析构函数又是什么时候被调用执行的呢?...一般情况下我们会在类的+load方法中实现一些全局初始化的逻辑。OC类的方法也是要求一定的上下文环境下才能被执行,那么+load方法又是什么时候被调用执行的呢?...再论C++的全局对象的构造析构 就如本文的开始部分的一个例子,对于非全局的C++对象的构造析构函数的调用总是调用者的函数内部完成,这时候存在着明显的函数上下文的调用结构。...但是当我们定义了一个C++全局对象时因为没有明显的可执行代码的上下文,所以我们无法很清楚的了解到全局对象的构造函数析构函数的调用时机。...上面就是我要介绍的C++全局对象的构造函数析构函数的调用以及实现的所有过程。我们从上面的章节中还可以了解到程序启动退出这个阶段所做的事情,以及我们所能做的事情。

4K20

为什么C语言依然是必学的编程语言,这3点告诉你答案

一、编程语言排行榜 给大家看一组数据,2019年7月,最新 TIOBE 编程语言排行榜: C语言 TIOBE开发语言排行榜每月更新一次,依据的指数是基于世界范围内的资深软件工程师第三方供应商提供,其结果作为当前业内程序开发语言的流行使用程度的有效指标...再来看一组数据,近十几年 TOP 10 编程语言走势图: C语言 这里说几点: 1.Python近两年随着人工智能火了。 2.C语言这么多年位居榜单前列。...二、C历史,及C标准 C语言发展的脚步,其实一直都没有停止:从C89、 C90、 C99...... C17,C语言标准还在更新。...、伸缩数组成员、指代初始化器、 fenv.h 、变参数宏、复数、 __func__ 、十六进制浮点格式( %a )、 lconv 的货币格式化、 isblank 、窄与宽字符串字面量的连接、枚举的尾逗号...tgmath.h 、仿 POSIX strftime 指定符 B.来自 C++ : inline 、声明与代码混合、 for 循环的 init 子句中的声明、 // 注释、源代码中的通用字符名 C.移除隐式函数声明隐式

80820

【STM32H7教程】第9章 STM32H7重要知识点数据类型,变量堆栈

C90标准。...因此,C89C90通常指同一个标准,一般更常用C89这种说法。  ...mod=viewthread&tid=501 9.3   局部变量全局变量 9.3.1      局部变量 一个函数内部定义的变量是内部变量,它只函数范围内有效,也就是说只有函数内才能使用它们...9.3.2      全局变量      函数内部定义的变量是局部变量,而在函数之外定义的变量称为外部变量,也就是全局变量。使用全局变量的注意事项:   全局变量可以为本文件中其他函数所共用。...设置全局变量的作用是增加了函数间数据联系的渠道。  如果在同一个源文件中,外部变量和局部变量同名,则在局部变量的作用范围内,外部变量被“屏蔽”,即外部变量将不起作用。

79860

C语言标准

现在多数C代码是ANSI C基础上写的。 ###C89C90   1983年,美国国家标准协会组成了一个委员会,X3J11,为了创立 C 的一套标准。...1990年,ANSI C标准(带有一些小改动)被美国国家标准协会采纳为ISO/IEC 9899:1990。这个版本有时候称为C90或者ISO C。因此,C89C90通常指同一种语言。...传统C语言到ANSI/ISO标准C语言的改进包括: 增加了真正的标准库 新的预处理命令与特性 函数原型允许函数申明中指定参数类型 一些新的关键字,包括 const、volatile 与 signed...C99新增了一些特性如: 支持不定长的数组,即数组长度可以在运行时决定。...变量声明不必放在语句块的开头,for 语句提倡写成 for(int i=0;i<100;++i) 的形式,即i 只 for语句块内部有效。 初始化结构的时候允许对特定的元素赋值。

47620

C语言指定初始化器解析及其应用

指定初始化器的概念 C90 标准要求初始化程序中的元素以固定的顺序出现,与要初始化数组或结构体中的元素顺序相同。但是新标准 C99 中,增加了一个新的特性:指定初始化器。...除了上述这样的用法,我们也能够初始化数组内一段范围内的用元素,比如这样: int a[5] = {[4] = 10,[0 ... 3] = 23}; 上面这段程序的初始化也就等同于如下初始化: int...应用 讲述了数组指定初始化器的基本概念之后,我们来看一个具体的例子,下面这个例子是基于状态机的编程方法实现的 ATM 机器,首先 ATM 具有如下几种状态; [在这里插入图片描述] 我们就可以使用状态机的思路来编写这个程序...,这个函数指针指向的是返回值为 eSysyemState,形参为 void 的函数。...结构体数组的指定初始化叙述了上面关于结构体和数组的指定初始化器之后,我们也可以以这种方式来来初始化结构体数组,比如这样: #include int main(void) {

85740

C语言指定初始化器解析及其应用

由于笔者能力有限,文中如果出现错误的地方,欢迎大家给我指出来,我将不胜感激,谢谢~ 指定初始化器的概念 C90 标准要求初始化程序中的元素以固定的顺序出现,与要初始化数组或结构体中的元素顺序相同。...但是新标准 C99 中,增加了一个新的特性:指定初始化器。利用该特性可以初始化指定的数组或者结构体元素。...除了上述这样的用法,我们也能够初始化数组内一段范围内的用元素,比如这样: int a[5] = {[4] = 10,[0 ... 3] = 23}; 上面这段程序的初始化也就等同于如下初始化: int...应用 讲述了数组指定初始化器的基本概念之后,我们来看一个具体的例子,下面这个例子是基于状态机的编程方法实现的 ATM 机器,首先 ATM 具有如下几种状态; ?...结构体数组的指定初始化叙述了上面关于结构体和数组的指定初始化器之后,我们也可以以这种方式来来初始化结构体数组,比如这样: #include int main(void) {

45720

【C】记录两个C语言的误区

关于函数的调用 一直以我都认为调用一个方法之前,必须要在前面声明原型或者直接定义该方法, 大概如下面的形式, 否则程序就会出现编译错误。...一开始我以为是使用的编译器的标准不同,因此尝试着使用c89,c90,c99,c11编译程序,使用c89c90时, 编译器还是没有报任何错误,而使用c99c11时,会报下面的警告: test.c:...^ test.c:4:2: note: previous implicit declaration of ‘aa’ was here aa(); ^ 查了一下, 大该就是如果不事先定义函数原型并且函数定义前调用该函数...总结一下就是函数未被定义之前(并且没有声明函数原型), 我们并不是绝对的不能调用它, 但是这种方式是十分不优雅的, 并且可能出现各种问题.。 所以还是采取函数原型的方式比较好。...静态数组 另一个误区就是静态数组的定义, 如下面的形式vc++6.0中编译时会出现错误 int n = 5; int arr[n]; 因此我一直以为c中定义静态数组必须要制定一个确定的值,而不能是变量

84220

【C语言笔记】什么是ANSI C标准?

1978年,丹尼斯•里奇(Dennis Ritchie)布莱恩•柯林汉(Brian Kernighan)合作出版了《C程序设计语言》的第一版。书中介绍的C语言标准也被称作K&R C。...1990年,ANSI C标准(带有一些小改动)被美国国家标准协会(ANSI)采纳为ISO/IEC 9899:1990。这个版本有时候称为C90或者ISO C。...C99新增了一些特性,如:支持不定长的数组,即数组长度可以在运行时决定。...1、 对齐处理:alignof(T)返回T的对齐方式,aligned_alloc()以指定字节对齐方式分配内存,头文件定义了这些内容。...2、 _Noreturn:_Noreturn是个函数修饰符,位置函数返回类型的前面,声明函数无返回值,有点类似于gcc的__attribute__((noreturn)),后者声明语句尾部。

2.7K30

C语言关键字

一般的书上,都是32个,但是这个都C90(C89) 的标准。其实 C99 后又新增了5个关键字。不过,目前主流的编译器,对 C99 支持的并不好,默认使用 C90 ,即,认为32个。...return 0; } 调试展示: 注意:register修饰的变量,不能取地址(因为已经放在寄存区中了,地址是内存相关的概念),不能大量使用register,因为寄存器数量有限 寄存器存在的意义:硬件层面上...因为不需要从内存里读取数据了 其实该关键字,不用管,因为现在的编译器,已经很智能了,能够进行比人更好的代码优化 三、最名不符实的关键字 - static 作用:修饰变量函数 注: 全局变量,是可以跨文件...全局函数,是可以跨文件,被访问的。 1.修饰全局变量:修饰后,该全局变量只能在本文件内被使用。 注:static修饰全局变量,影响的是作用域的概念,函数类似。而生命周期是不变的。...变量是否有符号无关! 取:取数据一定要先看变量本身类型,然后才决定要不要看最高符号位。如果不需要,直接二进制转成十进制。如果需要,则需要转成原码,然后才能识别。

12810

⭐️ 关键字深度剖析 ⭐️第一章(变量&关键字autoregister)

初步了解关键字分类 深刻理解变量 深刻理解定义与声明 auto关键字的理解 站在存储结构角度,理解register 关键字分类 ---- 一般的书上,都是 32 个, 但是这个都是 C90...extern 声明变量是在其他文件正声明 register 声明寄存器变量 static 声明静态变量 volatile 说明变量程序执行中可被隐含地改变 void 声明函数无返回值或无参数,声明无类型指针...,不能说错,但说法是不准确的 全局变量 在所有函数外定义的变量,叫做全局变量 全局变量具有全局性 代码块:用 {} 括起来的区域,就叫做代码块 int g_x = 100...; //全局变量 int main() { int x = 10; //局部变量,main函数也是函数,也有代码块{} printf("x:%d\n", x); return..."g_x:%d\n", g_x); //输出的是局部,也就是局部全部同名的时候,优先局部 return 0; } 变量的生命周期 概念 指的是该变量从定义到被释放的时间范围 所谓的释放

35240

【一通百通】CC++的std标准总结

适用C(或C源代码,如C ++,Objective-CObjective-C ++)的标准: -ansi C模式下,这相当于 -std = c90的。...当然,您不希望ISO C程序中使用它们,但将它们放在可能包含在编译完成的头文件中是有用的-ㄧ。备用的预定义宏,如__unix____vax__也可用,有或没有-ㄧ的。...通常内置但不具有ISO C(如allocaffs)定义的语义的函数不是内置函数-ㄧ用来。请参阅GCC提供的其他内置功能,了解影响功能的详细信息。 -std= 确定语言标准。...编译器可以接受几个基本标准,如“c90' 要么 'c ++ 98'这些标准的GNU标准,如“gnu90' 要么 'gnu ++ 98'。...例如, -std = c90关闭那些不符合ISO C90 GCC的某些功能,比如asmtypeof 关键字,而不是其他GNU扩展没有ISO C90意义,如省略的中期?: 表现。

92530

熬夜整理的万字CC++总结(一),值得收藏

因为此标准是1990年发布的,所以有些人把简称作C90标准。不过大多数人依然称之为C89标准,因为此标准与ANSI C89标准完全等同。...通常情况下,我们总觉得数组指针变量差不多,但是在用sizeof的时候差别很大,对数组名用sizeof返回的是整个数组的大小,而对指针变量进行操作的时候返回的则是指针变量本身所占得空间,32位机的条件下一般都是... 全局初始化数据区/静态数据区(data段) 该区包含了程序中明确被初始化全局变量、已经初始化的静态变量(包括全局静态变量t)常量数据(如字符串常量)。... 未初始化数据区(又叫 bss 区) 存入的是全局初始化变量初始化静态变量。未初始化数据区的数据程序开始执行之前被内核初始化为 0 或者空(NULL)。...,编译器默认初始化为NULL //那么全局static int 全局int变量有什么区别?

44411

为什么我十分喜欢C,却很不喜欢C++?

拥有 RAII 概念:一个简单的例子就是 C++ 拥有构造函数,可在创建对象时初始化对象;还拥有析构函数销毁对象时,做一些清理的工作。这个概念进一步发展,就接近 Rust 的生命周期了。...Rust 包的范围内提供了版本管理。据我所知,C++也曾尝试过引入“代际”的概念来实现同样的功能,但没有成功。我经常听到有人独自编写 C 编译器,却从来没听说过有人编写 C++编译器。...我不是讨论 C/C++,也不是指 C 与 C++的共通之处,我讨论的是耦合对标准编译器都有不良影响。...我常用的例子就是函数调用:根据调用的习惯约定编译器的实现,函数的参数的求值顺序可能完全是随机的,因此 foo(*ptr++, *ptr++, *ptr++)的结果是未定义的,因此即使你知道目标体系结构...另一方面,我对C++强烈的不满来自其设计上的选择,而且这些设计影响了C标准编译器。 至少我不可能用 C90 特别版取代 C90,并假装原来的版本不存在。

71710

C语言关键字详解(一) auto、register关键字

不过,目前主流的编译器,对C99支持的并不好,我们后面默认情况,使用C90,即,认为32个  二、补充内容 正式开始讲解关键字之前,我们需要了解下面这些基本概念 1、变量的分类 变量分为全局变量和局部变量...[网上很多说函数中的变量是局部变量,不能说错,但说法是不准确的] 全局变量:在所有函数外定义的变量,叫做全局变量。全局变量具有全局性。...注:代码块 — 函数中,用{}括起来的区域,就叫做代码块,代码块可以嵌套 2、变量的作用域与生命周期 作用域概念:指该变量可以被正常访问的代码区域 全局变量的作用域:整个程序运行期间都有效...> int g_val = 10; //g_val 在所有函数外部定义,是全局变量 int main() { int a = 20; //a main函数内部定义,是局部变量 printf...2、用法:auto关键字比较古老,一般我们定义变量的时候直接省略即可 3、总结:auto用来修饰局部变量,表示该局部变量的生命周期作用域只该代码块内有效,可以省略,不能用来修饰全局变量。

46600

C语言笔记---(1)初识C语言

C语言提供的数据类型包括:整型、浮点型、数组类型、指针类型、等,C99又扩充了复数浮点类型、超长整型(long long)布尔类型(bool)等。可以用来实现各种复杂的数据结构的运算。...5.具有结构化的控机语句 如for语句、if...else语句switch语句等。可以用于实现函数的逻辑控制,方便面向过程的程序设计。 用函数作为程序的模块单位,便于实现程序的模块化。...C语言是完全模块化结构化的语言。C语言对于输入输出的处理也是通过函数调用来实现的。...程序员可以自定义编制自己需要的函数库进行调用,实际上C语言程序就是由许多个函数组成的,一个函数即相当于一个程序模块,因此C语言可以很容易地进行结构化程序设计。...C11 2011年,标准化组织再一次对 C 语言进行修订,增加了 Unicode 多线程的支持。这个版本称为 C11。 C17 C11 标准2017年进行了修补,但发布是2018年。

23.6K11

PHP变量与常量

这大概是所有语言通用的规则,只不过PHP中变量名前要加上$ 赋值 变量有两种赋值方式:传值赋值引用赋值。...默认是传值赋值 预定义变量 PHP提供了大量的预定义变量,这些变量被分别放到几个数组中,称为预定数组。...这些数组全局范围内生效,所以也被称为超全局变量 $GLOBALS $_SERVER $_GET $_POST $_REQUEST $_SESSION $_COOKIE $_ENV $php_response_header.../ 也可以通过这种方式来访问$a变量 /* * 也可以将变量声明为静态的 * 静态变量是在编译阶段就分配到特殊的内存空间,称为静态空间 * 静态变量只会初始化一次...php /* * 可以使用define()、const定义常量 * 常量值只能是标量或数组,一但被定义,其值便无法更改 * * const定义常量是预编译阶段执行的,所以必须处于最顶端的作用域

2.8K30

C Primer Plus(一)

初识 起源 1972 年,贝尔实验室的 Dennis Ritch Ken Thompson 开发 Unix 系统时,设计了 C 语言,C 语言是 B 语言的基础上进行设计的。...C89/C90 由于应用越来越广泛,需要一个更为严格的标准,ANSI 于 1989 年定义了 C 语言和 C 标准库,ISO 于 1990 年采用这一标准,这一版本通常称为 C89 或 C90,也因为...C99 1994 年,ANSI/ISO 联合委员会开始修订 C 标准,最终发布 C99,这一标准并未在 C 语言中添加新特性,而是把国际化、弥补缺陷提高计算实用性作为主要修订目标,并尽量与 C90 兼容...GNU Compiler Collection LLVM GNU Compiler Collection 包含 GCC C Compiler,GCC 持续不断地开发,紧跟 C 标准改动,GCC 有各种版本以适应不同的平台操作系统...根据 C90 标准,我们可以 char 前使用 signed 或 unsigned 来限定到底是用什么类型,而不用管编译器的默认实现。

54030

最全的C语言基础知识梳理总结

数组名【常量表达式】;先定义后引用;一维数组初始化时可以只对一部分元素初始化,在对全部数组元素初始化的时候可以部规定长度;但是若被定义的数组长度与提供的初始值不一样时,则数组长度不能省略。...如果初始化时能指定所有元素的初始值,第一维大小可以省略,但是第二维不能省略。 字符数组:定义初始化数组差不多,只是需要加单引号。字符字符串结束标志,C语言规定,以‘’代表。...局部变量全局变量: (一)局部变量一个函数内部定义的变量是内部变量,它只是函数范围内的有效,主函数也不能使用其它函数中定义的变量;不同函数中可以使用相同的名字的变量,他们代表不同的对象,互不干扰...;形式参数也是局部变量;一个函数内部,可以复合语句中定义变量,这些变量只本复合语句中有效,这种复合句也可以称为“分程序”或“程序块”;(二)全局变量,函数之外定义的变量称为外部变量,全局变量可以增加函数间数据联系的渠道...,一般不再必要时不要使用,他程序的全部执行过程中占用存储单元,是函数的通用性,使用全局变量会使程序的清晰性降低。

2K40
领券