| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1616 人关注过本帖
标题:c语言,指针打印问题
取消只看楼主 加入收藏
java_haier
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2018-3-24
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
c语言,指针打印问题
本人刚开始学C,关于指针还不太明白,请问:

如下程序,按照预期,应该打印3次

但是实际打印不是3次,并且n不是从1开始打印,*p的值打印出来一直为空字符

这是为什么?

#include "stdafx.h"

int main()

{

    char s[] = "abc\0";

    char *p = s;

    int n;

    for (n = 0; *p != '\0', p++;) {

        n++;

        printf("n = %d\tp = %p\t*p = %c\n", n, p, *p);

    }

       return 0;

}
搜索更多相关主题的帖子: c语言 指针 打印 int char 
2018-03-24 10:31
java_haier
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2018-3-24
收藏
得分:0 
回复 2楼 九转星河
非常感谢,问题解决了
按照您给的答复,将for (n=0; *p != '\0', p++;)改成for (n=0; *p != '\0'; p++)就可以了

我查找了自己原先为什么那样写的原因,发现是自己模仿了中文版《C程序设计语言》中的一段代码

代码如下:
/* strlen: return length of string s */
int strlen(char *s)
{
    int n;
     for (n = 0; *s != '\0', s++)
        n++;
    return n;   
}

于是我就写成了for (n=0; *p != '\0', p++)
我用的是visual studio 2017,这样写它就会提示我p++后面少了;
加上去之后,打印就出错了
所以,中文版《C程序设计语言》的这一段代码是不是有误?

[此贴子已经被作者于2018-3-24 13:54编辑过]

2018-03-24 13:52
java_haier
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2018-3-24
收藏
得分:0 
回复 3楼 c20180318
谢谢您的回复
但是,想请教一下,为什么打印*p用的是%x?
转成十六进制吗?
2018-03-24 13:57
快速回复:c语言,指针打印问题
数据加载中...
 
   



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

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