在c++中,
const int i = 0; int *j = (int *) &i; *j = 1; printf("%d,%d", i, *j)
输出是多少?
void main(){ const int i = 0; int *j = (int *)&i; *j = 1; printf("%d,%d", i, *j); system("pause"); }
#include<iostream> using namespace std; int main(void){ const int i=0; int *j = (int *)&i; *j = 1; printf("%d,%d", i, *j); system("pause"); return 0; }
#include<stdio.h> #include<iostream> using namespace std; int main(void){ const int i=0; int *j = (int *)&i; *j = 1; printf("%d,%d\n", i, *j); cout << "i address"<<&i << endl; cout << "j address"<<j << endl; return 0; }
C++ 把 const 看做常量,编译器会使用常数直接替换掉对 i 的引用,例如 cout<<i; 会理解成 cout<<10; 并不会去访问 i 的内存地址去取数据,这里有点像是 C 语言里的宏 #define i 10 。因此 C++ 里 i 会输出 10 ,而 *j 会输出 20.