当前位置: 首页 > news >正文

济南cms建站动漫设计与制作难吗

济南cms建站,动漫设计与制作难吗,培训机构如何招生营销,中国软件是外包吗本篇文章记录我学习C语言进阶知识——C语言关键字#xff0c;旨在记录分享#xff0c;希望我的分享能带给你不一样的收获#xff01; 目录 一、return关键字 二、const 关键字也许该被替换为 readolny #xff08;一#xff09;、 const 修饰的只读变量 #xff08;二…  本篇文章记录我学习C语言进阶知识——C语言关键字旨在记录分享希望我的分享能带给你不一样的收获 目录 一、return关键字 二、const 关键字也许该被替换为 readolny 一、 const 修饰的只读变量 二、 节省空间避免不必要的内存分配同时提高效率 三、修饰一般变量  四、修饰数组 五、修饰指针  六、修饰函数参数 七、修饰函数的返回值  三、结语  一、return关键字 刚开始学习C语言的时候大家因该知道return关键字最重要的作用就是终止一个函数并返回其后面跟着的值。 return Val //此括号可以省略。但一般不省略尤其在返回一个表达式的值时。 return 可以返回些什么东西呢看下面例子 char * Func(void) {         char str[30];         …         return str; }str 属于局部变量位于栈内存中在 Func 结束的时候被释放所以返回 str 将导致错误。 既然如此那我们就深度来探讨一下C语言return 关键字的一些使用规则。 【规则1】return语句不可以返回指向“栈内存”的“指针”因为该内存在函数体结束时会被自动销毁。 这里大家再来探讨一个问题 return 这个语句有问题吗如果没有问题那返回的是什么 void 函数中的 return; 如果函数的返回类型是 void那么 return; 用于结束函数的执行。 例子void myFunction() {    ……// 执行一些操作    return; // 结束函数不返回任何值 } 非 void 函数中的 return; 对于返回类型不是 void 的函数如 int、float 等使用 return; 是不合法的因为这些函数需要返回一个值。 如果试图在这样的函数中使用 return;编译器会报错。 int myFunction() {         …… // 执行一些操作         return; // 错误缺少返回值 } 二、const 关键字也许该被替换为 readolny const 是 constant 的缩写是恒定不变的意思也翻译为常量、常数等。很不幸正是因为这一点很多人都认为被 const 修饰的值是常量。这是不精确的精确的说应该是只读的变量其值在编译时不能被使用因为编译器在编译时不知道其存储的内容。或许当初这个关键字应该被替换为 readonly。那么这个关键字有什么用处和意义呢 const 推出的初始目的正是为了取代预编译指令消除它的缺点同时继承它的优点。 我们看看它与 define 宏的区别。 很多人误以为 define 是关键字在这里我提醒你再回到本章前面看看 32 个关键字里是否有 define。 一、 const 修饰的只读变量 定义 const 只读变量具有不可变性。 例如 const int Max100; int Array[Max]; 这里请在 Visual C6.0 里分别创建.c 文件和.cpp 文件测试一下。你会发现在.c 文件中编译器会提示出错而在.cpp 文件中则顺利运行。为什么呢我们知道定义一个数组必须指定其元素的个数。这也从侧面证实在 C 语言中 const 修饰的 Max 仍然是变量只不过是只读属性罢了而在 C里扩展了 const 的含义这里就不讨论了。 注意 const 修饰的只读变量必须在定义的同时初始化想想为什么 留一个问题 case 语句后面是否可以是 const 修饰的只读变量呢请动手测试一下。 【答案】  const 修饰的只读变量必须在定义时初始化因为它的值在初始化之后不能被修改。这样做有几个原因 确保值不变const 变量在定义时必须初始化这样编译器能够知道其初始值并确保在整个程序的生命周期中不会被修改。如果没有初始值编译器无法保证变量的不可变性。 内存管理在编译时const 变量的值可以被直接嵌入到代码中或放置在只读存储区。如果没有初始化编译器无法为其分配适当的存储位置或内存导致无法确保变量值的不可变性。 程序正确性在程序运行时const 变量的不可变性是通过初始化保证的。如果没有初始化可能会出现未定义行为或程序错误因为变量的值可能未被设定或被错误地修改。 在 C 和 C 中case 语句后面通常需要是编译时常量即常量表达式而 const 修饰的只读变量可以用作 case 标签但有一些细节需要注意 1. 编译时常量要求 在 switch 语句的 case 标签中必须使用编译时常量。编译时常量是指在编译时已知的常量值。这意味着 case 标签的值必须在编译时确定。 2. const 变量的使用 const 修饰的变量的值在程序运行时是不可修改的但是编译器在编译阶段需要知道其具体值。只要 const 变量是在编译时能够确定其值的常量编译器就可以接受它作为 case 标签。 const int VALUE 5; switch (x) {     case VALUE:         // 执行相关代码         break;     // 其他 case 标签 } 在这种情况下如果 VALUE 在编译时是一个已知的常量值例如常量表达式那么它是可以作为 case 标签的。 需要注意的点 const 变量初始化const 变量必须在定义时初始化并且初始化值必须是编译时常量。 编译器支持某些编译器可能会对 const 变量的支持有所不同但在标准的 C 和 C 中const 变量在符合编译时常量的条件下通常是可以用于 case 标签的。 避免未定义行为确保 const 变量在编译时能够确定其值避免使用运行时值或非编译时常量否则会导致编译错误或未定义行为。 二、 节省空间避免不必要的内存分配同时提高效率 编译器通常不为普通 const 只读变量分配存储空间而是将它们保存在符号表中这使 得它成为一个编译期间的值没有了存储与读内存的操作使得它的效率也很高。 例如 #define M 3 const int N5; ...... int iN; int IM; int jN; int JM; //宏常量 //此时并未将 N 放入内存中 //此时为 N 分配内存以后不再分配 //预编译期间进行宏替换分配内存 //没有内存分配 //再进行宏替换又一次分配内存 const 定义的只读变量从汇编的角度来看 只是给出了对应的内存地址 而不是像#define 一样给出的是立即数所以 const 定义的只读变量在程序运行过程中只有一份拷贝因为 它是全局的只读变量存放在静态区而#define 定义的宏常量在内存中有若干个拷贝。#define 宏是在预编译阶段进行替换而 const 修饰的只读变量是在编译的时候确定其值。#define 宏没有类型而 const 修饰的只读变量具有特定的类型。 三、修饰一般变量  一般常量是指简单类型的只读变量。这种只读变量在定义时修饰符 const 可以用在类型说明符前也可以用在类型说明符后。例如 int const i2; 或 const int i2; 四、修饰数组 定义或说明一个只读数组可采用如下格式 int const a[5]{1, 2, 3, 4, 5};或 const int a[5]{1, 2, 3, 4, 5}; 五、修饰指针  const int *p; int const *p; int *const p; const int *const p; // p 可变 p 指向的对象不可变 // p 可变 p 指向的对象不可变 // p 不可变 p 指向的对象可变 //指针 p 和 p 指向的对象都不可变 这里给出一个记忆和理解的方法 先忽略类型名编译器解析的时候也是忽略类型名我们看 const 离哪个近。 “近水楼 台先得月”离谁近就修饰谁。 const int *p; int const *p; int *const p; const int *const p; //const 修饰*p,p 是指针 *p 是指针指向的对象不可变 //const 修饰*p,p 是指针 *p 是指针指向的对象不可变 //const 修饰 p p 不可变 p 指向的对象可变 //前一个 const 修饰*p,后一个 const 修饰 p指针 p 和 p 指向的对象都不可变 六、修饰函数参数 const 修饰符也可以修饰函数的参数当不希望这个参数值被函数体内意外改变时使用。例如 void Fun(const int i); 告诉编译器 i 在函数体中的不能改变 从而防止了使用者的一些无意的或错误的修改。 七、修饰函数的返回值  const 修饰符也可以修饰函数的返回值返回值不可被改变。例如const int Fun (void); 在另一连接文件中引用 const 只读变量extern const int i; //正确的声明extern const int j10; //错误只读变量的值不能改变。 注意这里是声明不是定义关于声明和定义的区别请看关于关键字的第一篇文章。 讲了这么多讲完了吗远没有。在 C里对 const 做了进一步的扩展还有很多知识未能 讲完。有兴趣的话不妨查找相关资料研究研究。 三、结语  关于本次C语言关键字的进阶知识就分享到此了“学如逆水行舟不进则退”愿我们一起努力逐梦不止砥砺前行
http://www.hkea.cn/news/14565929/

相关文章:

  • 无锡科技网站建设网站版权 技术支持
  • 做红酒的网站有哪些手机网站自助建站系统
  • 周浦高端网站建设公司网站开发背景策划书
  • 做网站需要可信认证吗傻瓜使用模板建网站
  • 施秉网站建设flash个人音乐网站模板源码
  • 大丰网站制作海外网站建设公司
  • 建设网站是什么科目c2c代表网站
  • 上海聚众网站建设公司邵阳做网站的公司
  • 运城建设银行网站宁波网站开发服务
  • iis虚拟网站湖南益阳
  • 东莞建网站哪家好长沙网站制作公司在哪里
  • 泗县网站建设与推广培训hao123我的上网主页hao123
  • 做营销策划的上哪个网站好外贸网站模
  • 可以自己做装修效果图的网站不能访问子目录的网站
  • 云网站制作的流程图免费建站网站大全
  • 成都装修网站建设多少钱怎样做服装厂的企业网站模版
  • 网站备案用户名忘了怎么办呼和浩特做网站的
  • 电商网站春节放假通知网站上线前营销推广工作准备
  • 做个医院网站多少钱苏州吴江区住房和城乡建设局网站
  • 国外装修网站模板蒙牛企业网站建设规划书
  • 重庆网站建设公司咨询亿企帮深圳做网站和视频宣传机构
  • 建设网站设备预算开发网站需要什么开发工具
  • 定制网站和模板网站有何区别wordpress更新是乱码
  • 做体彩网站怎么做xampp wordpress安装教程
  • html5农业网站模板国家对网站建设政策
  • 株洲网络公司-网站建设怎么样做网站南京
  • 找工作的网站平台汉中建网站
  • 目前较流行的网站开发框架网站的空间
  • 形容网站开发的词seo网站建设价格
  • 西宁网站制作哪家好wordpress局域网无法访问