int *p=10;p=20;哪错了
让p 指向10的地址,再通过p把10改为20,哪里不对
c语言里面有类型的概念,有地址的概念,
而指针的概念,其实是针对地址的,指针的声明使用的是类型 *
比如你定义一个指针类型 int *p ; 这里的int *是他的类型,而p是变量,指针的含义是指向一块地址,所以对指针变量p的初始化,你应该是给他赋一个地址 比如int a =10; p=&a; (这里的&a其实就是一个int的数字)
而你如果直接int *p = 10; 是不是认为你是让p指向了位置10的地址,至于改为20,其实是一样的,没法用啊。
注意指针的用法,指针一般指向的是一块地址,而取地址内的值是在指针变量前加*。
所以你如果要用,应该是int a =10; int *p = &a; *p=20; 然后看a的值
int main(void) {
int a = 10;
int* p = &a;
*p = 20;
printf("%d\n",a);
return 0;
}
输出结果为20,可以看看指针的初始化
int * p=10;可以拆分成两部分来看
①int * p;//定义指向整数类型的指针变量 p
②p=10;//将整数10的地址存入到指针变量 p 中 也就是 p指向了10
再看p=20;//与上一句2同理,将整数20的地址存入到指针变量 p 中 也就是 p指向了20,把10覆盖掉了而已,并没有改10为20
改正方案:
int *p,a=10;
p=a;
*p=20;
希望对题主有所帮助,可以的话,帮忙点个采纳!
int *p=10;
*p=20;