int array[10];
int* a = array + 10; // well-defined
int* b = &array[10]; // not sure...
Run Code Online (Sandbox Code Playgroud)
最后一行是否有效?
下面显示的问题是面试问题
问)你有一个数据类型,比如说C中的X.
要求是获取数据类型的大小,而不声明该类型的变量或指针变量,
而且,当然不使用sizeof运算符!
我不确定此问题是否曾在SO中提出过.
谢谢并问候Maddy
我意识到,如果我将const int定义到c ++函数体中然后使用地址算法来改变常量的值(它在堆栈上,不是吗?).我有这个代码:
const int a = 10;
int b = 100;
int * c = &b;
c++;
cout << "&a: " << &a << endl;
cout << " c: " << c << endl;
*c = 100500;
cout << " a: " << a << endl;
cout << "*c: " << *c << endl;
Run Code Online (Sandbox Code Playgroud)
我得到了这个输出
&a: 0x7ffff63866a8
c: 0x7ffff63866a8
a: 10
*c: 100500
Run Code Online (Sandbox Code Playgroud)
因此,地址是相同的,但值是不同的.有人能解释一下这个结果吗?谢谢!ps我试过GCC,Clang和VS.