c语言指针问题?

请问这个程序为什么全部是99?
#include<stdio.h>
int main()
{
int a = 15, b = 99, c = 222;
int *p = &a; //定义指针变量
*p = b; //通过指针变量修改内存上的数据
c = *p; //通过指针变量获取内存上的数据
printf("%d, %d, %d, %d\n", a, b, c, *p);

return 0;

}

a=15,b=99,c=222
接下来,看一看程序都做了什么:
①int *p=&a;,这一句话相当于执行以下两句话:
int*p;,定义一个整型指针p
p=&a;,把变量a的地址赋值给p,就是让p指向变量a。
②*p=b;,这是一个赋值语句,它把变量b的值(99)赋值给指针p指向的变量。
因为p指向的是变量a,所以这一句相当于:
a=b;
运行后,abc的值分别是:99、99、222。
③c=*p;,这又是一个赋值语句,它是把p指向的变量的值赋值给c。
所以,这一句相当于:c=a;
运行后,a=99、b=99,c=99。
故最后打印出来的四个值都是99。
有什么问题请留言。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-03-27
char
*str="i
hate
c
language";
str指针指向的是一个常量字符串```我们不能更改其值```
所以*(str+n)=*(str+i);是错误的```简单一点的做法是这样:
将char
*str="i
hate
c
language";
改为char
str[50]="i
hate
c
language";
或者在函数feng中给str重新分配一个空间(使用malloc())```
第2个回答  2020-03-27

第3个回答  2020-04-25

30分钟彻底学会C语言指针

相似回答