我有一个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;
是错误。
答案 0 :(得分:5)
const int *p
表示您无法使用p
修改p
指向的整数,如*p = 5;
中所示。它指向的整数可能不是const int
,这就是j = 10
有效的原因。这可以防止编码器修改指向的整数。
答案 1 :(得分:2)
const int * p表示您无法更改p
地址中的内容你不能嘲笑* p
答案 2 :(得分:0)
const int 表示其值remain same
,直到程序结束,因此您无法更改其值。