我有一個C程序行爲 - Visual C
#include<stdio.h>
void f(const int* p)
{
int j;
p = &j;
j = 10;
printf("Inside function *p = %d\n",*p);
*p = 5;
printf("Inside function *p = %d\n",*p);
j = 7;
printf("Inside function *p = %d\n",*p);
}
int main()
{
int i = 20, *q = &i;
f(q);
}
方案的編制提供了錯誤的只讀位置* P的
分配
在該行*p = 5;
爲什麼這個任務是j = 10;
有效,並且*p = 5;
是錯誤。
你聲明'p'是一個'const int * p'。 'const'意味着你不打算改變'* p'的值。但你做了,所以得到了錯誤。 'j'被聲明爲'int j'。它不是'const',所以你可以改變它。 – lurker
@mbratch這可能是重點,但djhaskin解釋得更清楚。 – Vinod
[使用指針重複更改const int的值](http://stackoverflow.com/questions/20929551/changing-value-of-const-int-using-using-pointer?rq=1),[Const變量更改與指針在C](http://stackoverflow.com/questions/9371892/const-variable-changed-with-pointer-in-c),[混淆關於修改常量變量使用指針](http:// stackoverflow。 com/questions/21372713/confusion-about-modification-of-const-variable-using-pointers?rq = 1) – 2014-03-07 04:13:39