C与C++在const用法上的区别
作者:网络转载 发布时间:[ 2015/4/29 16:15:41 ] 推荐标签:C++ 软件开发 语法
首先,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
",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 }

sales@spasvo.com