c语言指针,为什么结果是20?

#include<stdio.h>
int main(){
int a=10;
int *p=&a;
*p=20;
printf("%d",*p);//20
return 0;
}

#include<stdio.h>
int main(){
int a=10;
int *p=&a; //把a的地址赋给p
*p=20; //p所指向的地址单元存储的值,修改为20(即把a修改为20)
printf("%d",*p);//这是输出指针p所指向单元的值,即输出20
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2020-04-02
您好。我来给您把这个题目的每一行进行解释。第一行是指程序包含头文件,这个头文件是包含输入输出函数,因为程序中有printf输出函数。第二行是主函数的定义部分,第三行表示在主函数中定义整型变量a并赋初始值为10。第四句是定义指向整型变量的指针变量p,并且把变量a的存储地址赋值给p,第5行是给p所指向的地址中放入值20,这句话就说明p所指向的地址中已经存入的值为20,追答

不好意思,刚才没有回答完,但是不小心点了发布。

p所指向的地址中存入了数据20,那么再输出*p时就代表输出p所指向的地址中的值,所以肯定是20哦。

第2个回答  2020-04-02
那你认为是多少?

C语言指针题
1. p是指向a地址(内存单元)的一个指针。*p指的是p所指向内存单元里的值,即为a的值,故*p+a 就相当于a+a,结果就为20 2. scanf是格式化输入函数(C语言中的库函数),它需要变量的地址,而p就是指向a的地址的,故此答案是:scanf("%d",p);...

c语言求大神,第十题为啥,*p不就是常量吗?
int *p;这表示申请一个int型的指针变量,指针p并没有指向任何一个int型的变量,此时它只是个野指针,所以*p=20;是不合法的,正确方法如下:int *p;int a;p = &a;p = 20;

C语言,答案是a=20,b=20怎么得出来的
q =a; \/\/ 将b的值赋给指针p执行的地址单元,即a,等价于b=a=20(因为前面a已经等于20了)

C语言中的指针为什么会改变变量的值?
pa=&a;句是将指针*pa指向变量a。pa存放的是a的地址,*pa其实就是a,可以理解为把a换了一个名字表示。*pa=20就是对a进行赋值操作,等于a=20;a的值当然改变了。看看指针的知识吧!

C语言中,*p=20;这样的赋值 合法吗?为什么老谭的书说其不合法呢!_百度...
如果之前是这样定义的 int *p;即你定义p是一个指向int型的指针,肯定是合法的(注意,我只是说合法,没说是正确的,合法只是说符合C语法的基本要求,可以通过编译,但不代表运行不会出错)谭书中,说这是错的(严格的说法是符合语法,但是运行会出错),那是因为这里的p是一个野指针,说白了,就是指向不确定,...

C语言中指针*p++应该等于*(p++),但下面的结果是11,11;为什么不是10,21...
所以printf("%d\\n%d",*(p++) ,++(*p));的处理顺序是,先处理++(*p),再处理*(p++)先处理++(*p)时,也就是++x[0],得到11,同时将x[0]值置为11 再处理*(p++),这里是先将p带入代理,再进行++处理,所以p仍然指向x[0],由于在上一步x[0]值被置为11,所以这里得到的也为11 最...

请教C语言指针问题
首先是数组的概念,很多人对C语言的数组的概念理解并不到位,有时间可以找打相关的资料看一看,像a这样的一维整形数组可以隐式转换为 int*, 所以你后面的 **b = a; 这句代码是错误的。很多人对指针的理解也是不太正确的,其实指针的意思并不复杂,指针保存的是地址对象,同时它还需要携带一个信息...

c语言指针问题。。为什么两种方法输出来的结果不一样。。
sort 内部指针w所指数组a是 局部变量 ,意味着a的数据是在栈上分配的 那a的地址传递给w由w返回到外界main中赋值给p,此时p所指的内容是无意义数据(sort的局部变量)C语言实现本质上局部变量失效时并不会清空,但是可以被访问,这也是为什么第一位数据输出的是对的 但是输出第二位的时候,代码需要...

C语言的指针是什么
址向低地址方向移动了20个字节。总结一下,一个指针ptrold加上一个整数n后,结果是一个新的指针ptrnew,ptrnew的类型和ptrold的类型相同,ptrnew所指向的类型和ptrold所指向的类型也相同。ptrnew的值将比ptrold的值增加了n乘sizeof(ptrold所指向的类型)个字节。就是说,ptrnew所指向的内存区将比ptrold所指向的...

在c语言的指针运算中*(p+1)与p+1有什么区别 p是指针
在这个例子中,`p`初始指向数组`arr`的第一个元素。通过`*`我们获取到了数组的第二个元素的值,即20。而通过`p+1`我们得到了一个新的指针`next_ptr`,它指向数组的第二个元素。之后,我们可以通过解引用`next_ptr`来获取它所指向的值,也就是20。这清晰地展示了`*`和`p+1`在C语言指针运算...

相似回答