首先,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 }