惠安县建设局网站购物网站开发的基本介绍
惠安县建设局网站,购物网站开发的基本介绍,网站做搜索引擎的作用是什么,腾讯企业邮箱登录入口下载extern
在 C 语言中,使用 extern 关键字声明的变量是外部变量,表示该变量在其他文件中定义。 extern 关键字在 C 语言中用于声明外部变量或函数,使得它们可以在多个文件中共享和使用。 extern 主要用于实现模块化编程和代码的分离。 extern 变量的声明和定义通常放在不同的…extern在 C 语言中,使用extern关键字声明的变量是外部变量,表示该变量在其他文件中定义。extern关键字在 C 语言中用于声明外部变量或函数,使得它们可以在多个文件中共享和使用。extern主要用于实现模块化编程和代码的分离。extern变量的声明和定义通常放在不同的文件中。为了使用 extern 变量和函数,必须将所有相关文件一起编译。定义和初始化:外部变量必须在一个文件中定义和初始化,而在其他文件中仅声明。extern 声明不能进行初始化。头文件使用:通常将 extern 声明放在头文件中,然后在需要的源文件中包含该头文件。在源文件(.c/.cpp)中定义的全局变量:默认具有外部链接,可以被其他源文件访问,访问的时候在引用的头文件中用extern声明即可注意!!!不提倡使用全局变量,尽量不要在头文件中出现象 extern int value 这类声明Q 为什么不提倡使用全局变量?A 破坏了封装性,可以被任何函数随意修改(可能引发初始化顺序不同,结果不同),难以追踪,增加调试难度多个源文件使用相同的全局变量会出现命名冲突/Q 为什么尽量不要在头文件中出现象 extern int value 这类声明?A 破坏模块化+隐藏依赖关系解决方案// config.cstaticints_max_size=100;// static限制文件内可见intget_max_size(){returns_max_size;}voidset_max_size(intsize){s_max_size=size;}// config.hintget_max_size();voidset_max_size(intsize);核心原则:最小权限原则:变量只在需要的地方可见显式优于隐式:通过参数传递,不要用全局变量隐式传递单一职责:每个模块管理自己的状态可测试性:避免外部状态依赖头文件中只声明,源文件中定义,可以避免出现重复定义1、在a.c文件中定义一个变量,在b.c文件中引用,成功调用感谢 https://blog.csdn.net/qq_27664167/article/details/82859852但由于源文件一般不声明,因此才在头文件中声明,然后源文件引用头文件static 存储类static 存储类指示编译器在程序的生命周期内保持局部变量的存在,而不需要在每次它进入和离开作用域时进行创建和销毁。因此,使用 static 修饰局部变量可以在函数调用之间保持局部变量的值。static 修饰符也可以应用于全局变量。当 static 修饰全局变量时,会使变量的作用域限制在声明它的文件内。全局声明的一个 static 变量或方法可以被任何函数或方法调用,只要这些方法出现在跟 static 变量或方法同一个文件中。静态变量在程序中只被初始化一次,即使函数被调用多次,该变量的值也不会重置。#includestdio.h/* 函数声明 */voidfunc1(void);staticintcount=10;/* 全局变量 - static 是默认的 */intmain(){while(count--){func1();}return0;}voidfunc1(void){/* 'thingy' 是 'func1' 的局部变量 - 只初始化一次 * 每次调用函数 'func1' 'thingy' 值不会被重置。 */staticintthingy=5;thingy++;printf(" thingy 为 %d , count 为 %d\n",thingy,count);}原码补码反码计算机用0和1表示一切,包括正负数。怎么区分呢?人们设计了三种方法:原码、反码、补码。规则:最高位(最左边的位)表示符号,0代表正,1代表负。剩下的位表示数字的绝对值。问题:存在 “正零”和“负零”。因为计算有问题,所以发明了反码。人们想:正数不变,负数做点手脚。问题:。、正零(0000)和负零(1111)依然同时存在,问题没完全解决。为了彻底消灭“-0”并让计算更简单,天才的补码诞生了。补码:核心思想来自时钟。在这个时钟上,-2的操作 等价于 +14的操作。补码就是这个“等价的正数”。规则:正数的补码 = 其原码(和原码一样)。负数的补码 = 其反码 + 1。(更本质的定义:负数的补码 = 2^位数 - 其绝对值)最大优势:1 解决了 ±0 问题:补码中,0000是0,1000被用来表示 -8,没有“-0”。2 统一了加减法:减法可以变成加法来做。CPU只需要一个加法器电路,就能同时处理加法和减法,设计大大简化。因此会有~1 = -2;和~0 = -1;循环while循环:它会在执行循环主体之前测试条件。do-while循环:在循环主体结尾测试条件无限循环: 一般用for循环留空来表示for(;;){printf("该循环会永远执行下去!\n");}全局变量在程序中,局部变量和全局变量的名称可以相同,但是在函数内,如果两个名字相同,会使用局部变量值,全局变量不会被使用。当局部变量被定义时,系统不会对其初始化,必须自行对其初始化。定义全局变量时,系统会自动对其初始化。数组虽然数组名表示数组的地址,但在大多数情况下,数组名会自动转换为指向数组首元素的指针。这意味着我们可以直接将数组名用于指针运算。voidprintArray(intarr[],intsize){for(inti=0;isize;i++){printf("%d ",arr[i]);// 数组名arr被当作指针使用}}intmain(){intmyArray[5]={10,20,30,40,50};printArray(myArray,5);// 将数组名传递给函数return0;}注意:int arr[]的写法就是一个“指针”,它和 int *arr完全等价。 编译器在处理时,会将数组形式的参数“退化”为一个指针因此,也可以这样遍历数组:*(p + i)数组元素在内存中从低地址到高地址连续存储,但在栈区分配局部变量时,地址分配顺序与编译器实现有关,通常是从高地址向低地址增长。关于动态数组的内容参考https://blog.csdn.net/stm32er/article/details/157738928?spm=1011.2415.3001.5331枚举枚举是 C 语言中的一种基本数据类型,用于定义一组具有离散值的常量。枚举类型通常用于为程序中的一组相关的常量取名字,以便于程序的可读性和维护性。第一个枚举成员的默认值为整型的 0,后续枚举成员的值在前一个成员上加 1。可以在定义枚举类型时改变枚举元素的值。enumseason{spring,summer=3,autumn,winter};定义枚举类型enumDAY{MON=1,TUE,WED,THU,FRI,SAT,SUN}day;day=MON;或者enum{MON=1,TUE,WED,THU,FRI,SAT,SUN}day;可以将整数转换为枚举↓ (得满足特定的条件,不能随意转换)weekend=(enumday)a;指针所有实际数据类型,不管是整型、浮点型、字符型,还是其他的数据类型,对应指针的值的类型都是一样的,都是一个代表内存地址的长的十六进制数。不同数据类型的指针之间唯一的不同是,指针所指向的变量或常量的数据类型不同。指针在递增和递减时跳跃的字节数取决于指针所指向变量数据类型长度,比如 int 就是 4 个字节。递增结构体指针:#includestdio.hstructPoint{intx;inty;};intmain(){structPointpoints[]={{1,2},{3,4},{5,6}};structPoint*ptr=points;// 指针指向结构体数组的第一个元素printf(