| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 328 人关注过本帖
标题:小白初学,不懂这串指针代码的输出为什么这样
只看楼主 加入收藏
sleepyyuy
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2020-11-23
结帖率:0
收藏
已结贴  问题点数:10 回复次数:5 
小白初学,不懂这串指针代码的输出为什么这样
输出居然是4432
程序代码:
#include<stdio.h>

int main()
{
  char s[]="1234",*p;
  p=s;
  printf("%c%c%c%c\n",*p,*++p,*++p,*++p);      
}
搜索更多相关主题的帖子: 输出 printf 代码 char 指针 
2021-02-12 13:40
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:399
帖 子:7837
专家分:45834
注 册:2011-1-18
收藏
得分:10 
未定义行为。
因为函数参数的求值顺序是未定的,且修改了同一个变量。
2021-02-12 14:28
sleepyyuy
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2020-11-23
收藏
得分:0 
回复 2楼 rjsp
get√到一个新知识
2021-02-12 16:23
sleepyyuy
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2020-11-23
收藏
得分:0 
回复 2楼 rjsp
大佬这串代码是怎么输出的,奇奇怪怪的。输出的是1711717
程序代码:
#include<stdio.h>
#include<string.h>
void fun(char *p,int n);

int main()
{
  static char s[]="1234567";
  fun(s,strlen(s));   
  puts(s);
  return 0;
}
void fun(char *p,int n)
{
  char k,*p1,*p2;
  p1=p;     
  p2=p+n-1;   
  while(p1<p2)
  {
    k=*p1++;
    *p1=*p2--;
    *p2=k;
    
  }
}
2021-02-13 16:25
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:399
帖 子:7837
专家分:45834
注 册:2011-1-18
收藏
得分:0 
k=*p1++;
    *p1=*p2--;
    *p2=k;

我猜你想要的是
    k=*p1;
    *p1=*p2;
    *p2=k;
    ++p1, --p2;
2021-02-13 21:54
sleepyyuy
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2020-11-23
收藏
得分:0 
回复 5楼 rjsp
确实是这样
2021-02-14 00:18
快速回复:小白初学,不懂这串指针代码的输出为什么这样
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.129591 second(s), 8 queries.
Copyright©2004-2021, BCCN.NET, All Rights Reserved