吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1102|回复: 14
收起左侧

[求助] c语言指针问题

[复制链接]
163585580 发表于 2021-3-31 14:26
为什么arr[2]运行出来是1啊?这个怎么理解?求大神


#include <stdio.h>
#define N 6
void pointer_self_add(){
    int arr[N]={1,2,3,4,6,5};
    int *p;
    int j;
    p=arr;
    j=*p++;//把p赋值给j,在++
    printf("%d,%d,%d\n",arr[0],j,*p);
    j=p[0]++;//把p[0]赋值给j,然后对p[0]++,
    //等价于(*p)++
    printf("%d,%d,%d\n",arr[2],j,*p);
}
int main(){
    pointer_self_add();
    return 0;
}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

boy7928 发表于 2021-3-31 14:36
arr[2]运行出来是3 啊  
2个打印 分别结果
1,1,2
3,2,3
weliong 发表于 2021-3-31 14:43
小益达 发表于 2021-3-31 15:01
一楼说的没错,个人理解不知道对不对
j=p[0]++;//把p[0]赋值给j,然后对p[0]++,这里的p[0]实际上是arr[1]的地址,后面的你应该自己就懂了
sam喵喵 发表于 2021-3-31 15:10
小益达 发表于 2021-3-31 15:01
一楼说的没错,个人理解不知道对不对
j=p[0]++;//把p[0]赋值给j,然后对p[0]++,这里的p[0]实际上是arr[1] ...

照这么理解的话*P不是等于2?
阳光好青年 发表于 2021-3-31 15:14
https://www.runoob.com/try/runcode.php?filename=helloworld&type=c,菜鸟C 在线编译运行结果:
1,1,2
3,2,3
Luckyu920 发表于 2021-3-31 16:03
[C++] 纯文本查看 复制代码
#include <stdio.h>
#define N 6
void pointer_self_add(){
    int arr[N]={6,40,5,10,3,20};
    int *p;
    int j;
    p=arr;
    j=*p++;//把p赋值给j,在++,即,j=arr[0];
    printf("%d,%d,%d\n",arr[0],j,*p);
	//arr[0] 是第一个元素
	//*p++ 指向下一个元素,即第二个元素,为40 
	//故输出 6 6 40 
	
	 
    j=p[0]++;//把p[0]赋值给j,然后对p[0]++,
    //注意此时指针p指向第二个元素,即j=p[0]=arr[1]=40;
    //等价于(*p)++
    printf("%d,%d,%d\n",arr[2],j,*p);
    //arr[2] 是第三个元素
	//p[0]=arr[1]=40;
	//然后p[0]++变成41 
	//故输出 5 40 41 
}
int main(){
    pointer_self_add();
    return 0;
}


我换了里面的元素,也加了注释,你参考看一下哈
wsxzaq 发表于 2021-3-31 16:05
VS结果:
1,1,2
3,2,3.
至于为什么第二*p = 3,是因为p[0]++的缘故:p[0] = 2,++后就变成3。你可以打印出数组,结果为{1,3,3,4,6,5}
aristan 发表于 2021-3-31 16:45
你用什么编译的?我的gcc编译结果为
1,1,2
3,2,3
 楼主| 163585580 发表于 2021-3-31 16:49
wsxzaq 发表于 2021-3-31 16:05
VS结果:
1,1,2
3,2,3.

请问一下,为啥打印数组后arr[2]会变成3
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 04:43

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表