const int指针的行为 - C.

时间:2014-03-07 03:54:07

标签: c pointers const

我有一个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;是错误。

3 个答案:

答案 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,直到程序结束,因此您无法更改其值。