在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.