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

网站建设中网站功能描述书功能岐山县住房和城市建设局网站

网站建设中网站功能描述书功能,岐山县住房和城市建设局网站,广州市海珠区建设局网站,男女之间做那个的网站文章目录1 const的分析2 const本质的分析实验2.1 代码案例分析3 const修饰函数参数和返回值时的情况3.1 代码案例分析4 总结1 const的分析 不管是C语言还是C语言#xff0c;const都是一个非常重要的关键字。今天这篇文章着重学习记录C语言中的const。C语言中稍有不同。 在C语… 文章目录1 const的分析2 const本质的分析实验2.1 代码案例分析3 const修饰函数参数和返回值时的情况3.1 代码案例分析4 总结 1 const的分析 不管是C语言还是C语言const都是一个非常重要的关键字。今天这篇文章着重学习记录C语言中的const。C语言中稍有不同。 在C语言中 const修饰的变量是只读的本质上还是变量。注意不是常量。const修饰的变量如果是局部非静态变量则该变量存储在栈上const修饰的变量如果是全局变量则该变量一定是存储在全局的数据区.dataconst修饰的变量在程序编译期就得出了相应的属性在运行期间该const关键字没有作用 注意const修饰的变量不是真正的常量。它只是告诉编译器它修饰的变量不能出现在赋值符号的左边。后面我们会知道const修饰的局部变量是可以通过指针改变的但是const修饰的全局变量是不可以改变的当然这是现代C编译器标准C编译器编译的还是可以修改。后面会有说明 在现代C语言编译器中修改const修饰的变量会导致程序段错误。程序崩溃。因为现代C语言编译器会将const修饰的变量储存在只读存储区.rodata。 但是在标准C语言编译器中不会将const修饰的变量储存在只读存储区。而是储存在可修改的全局数据区.data所以它的值依然可以改变。只要通过指针找到它的地址就可以改变它的值。 比如下面的代码放到比较老的BCC编译器中编译与在vs2017中编译效果肯定是不同的。由于没有安装BCC编译器且代码逻辑比较简单实验部分读者可以自己做实验 #include stdio.hconst int g_cc 2;int main() {const int cc 1;int* p (int*)cc;printf(cc %d\n, cc);*p 3;printf(cc %d\n, cc);p (int*)g_cc;printf(g_cc %d\n, g_cc);*p 4;printf(g_cc %d\n, g_cc);return 0; }2 const本质的分析实验 其实上面的内容就已经说了const的本质。 C语言中的const使得变量具有只读属性现代C语言编译器中将const修饰的具有全局生命周期的变量包括全局变量和局部静态变量储存在.rodata区。 const 不能定义真正意义上的常量 2.1 代码案例分析 9-2-lyy.c #include stdio.hconst int g_array[5] {0};void modify(int* p, int v) {*p v; }int main() {int const i 0;const static int j 0;int const array[5] {0};modify((int*)i, 1); // ok// modify((int*)j, 2); // errormodify((int*)array[0], 3); // ok// modify((int*)g_array[0], 4); // errorprintf(i %d\n, i);printf(j %d\n, j);printf(array[0] %d\n, array[0]);printf(g_array[0] %d\n, g_array[0]);return 0; }在现代C语言编译器中进行编译运行吗上述代码是可以运行成功的。证明了局部const变量是可以通过指针修改的。同时上述代码的第17和19行如果不注释掉程序的就无法运行会产生段错误。这也说明了全局变量和局部静态变量如果被const修饰的话编译器会将其修饰的变量放到.rodata区这个区的内容是不允许被改变的通过指针也无法改变。 3 const修饰函数参数和返回值时的情况 const修饰函数参数表示在函数体内不希望修改该参数的值const修饰函数的返回值表示返回值不可改变。多用于函数返回值为指针的情形。 注意C语言中的字符串字面量存储于.rodata区在程序中需要使用const char* 指针修饰字符串。 如 3.1 代码案例分析 代码9-3-lyy.c #include stdio.hconst char* f(const int i){//i 5;return LyyLearn_C; } int main(){char* pc f(0);printf(pc %s\n, pc);pc[3] _;printf(pc %s\n, pc);return 0; }上述代码编译后编译有警告运行会产生错误因为pc所指向的内存为.rodata区。不能修改.rodata区里面的内容。第16行会导致程序产生段错误。当然第5行注释的代码会导致程序编译出错。 4 总结 const使得变量具有只读属性const不能定义真正意义上的常量const将具有全局生命周期的变量包括const全局变量const局部静态变量储存在具有只读属性的.rodata区中。不能通过指针法修改该区域中的变量标准C编译器与现代C编译器稍有不同标准C编译器不会将const修饰的具有全局生命周期的变量储存在.rodata区中所以可以通过指针修改该变量。 一般来说我们使用的都是现代C编译器
http://www.zqtcl.cn/news/894286/

相关文章:

  • 怎样做模板网站手机营销型网站制作
  • 如何采集网站内容如何做网站导航栏的搜索引擎优化
  • 网站关键词排名外包织梦大气婚纱影楼网站源码
  • 网站建设执行力冠县哪里有做网站的
  • 免费网站推广咱们做网络营销推广的应用场景
  • 深圳正规网站制作哪家公司好做网站代理属于开设赌场罪吗
  • 江西宜春市建设局网站wordpress博客下载器
  • 汕头站扩建效果图微信怎么引流营销呢
  • 小学学校网站建设计划wordpress博客示例
  • 德邦公司网站建设特点万网是什么
  • 天津武清网站开发广东省建筑网站
  • 青岛做外贸网站哪家好佛山网站建设哪家好
  • 网站关键词设置技巧wordpress 获得参数
  • 程序网站开发搜索引擎有哪些技巧
  • 网站模板上传教程响应式网站建设免费
  • 网站建设与设计ppt模板wordpress调用大全
  • wordpress信息修改佛山网站优化如何
  • 最权威的排行榜网站招网站开发人员
  • 北京通州住房和城乡建设部网站网站获取访客手机号源码
  • 网站开发与建设网站程序基础
  • 网站建设属于什么税php网站建设全程实例
  • 做网站语言排名2018淄博市沂源县建设局网站
  • 腾冲网站建设哪个电商平台最好
  • 重点实验室网站建设宁波seo优化服务
  • 怎么用手机做刷会员网站网页设计指什么
  • 小企业网站建设多少钱网页设计图片剧中
  • 新乐做网站优化如何做二级域名子目录网站
  • 如何在网站上做推广中国在数码网站注册域名好 gt
  • 电子商务电商网站饿建设管理网站建设
  • php网站出现乱码网站建设项目总结