C与C++在const用法上的区别

发表于:2015-4-29 10:18

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:jiapeng    来源:51Testing软件测试网采编

  首先,C和C++在大体结构上不同,却在语法上相同。  所以在使用的时候,我们会时常遇到一些莫名其妙的问题,觉得语法上是正确的,但是编译的时候却出现一个红色的 error! 比如今天我遇到的这个有意思的问题。
  1. 今天看到一段代码,觉得很有意思:
1 #pragma warning(disable : 4090)
2
3 #include<stdio.h>
4
5 int main(int argv, char args []) {
6
7  const int var = 4;
8     int *p = &var;
9     *p = 1;
10     printf("%d\n",var);
11     getchar();
12 }
  答案很定不用说:    1      原因也很简单:  C弱类型语言,C++是强类型语言。  p指针指向了var的地址,并将var的值改变!
  但是,我们再看看,这个两个代码:
1 #include<iostream>
2
3 using namespace std;
4
5 int main(int args , char  argv[]) {
6
7     const int var = 10;
8     std::cout << "var =" << var << std::endl;
9     //    int * p= &var;  --不能转换,会报错!
10     //可以使用强制转换
11     int  *p = (int *)&var;
12     *p = 3;
13     std::cout << "*p =" << *p << std::endl;
14     int num[var];
15
16     int i = 0;
17     //初始化
18     for (auto data : num) {
19         data =++i;
20         std::cout<<"num["<<i-1<<"] =" << data << std::endl;
21     }
22     getchar();
23     return 0;
24 }
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号