鱼C论坛

 找回密码
 立即注册
查看: 1723|回复: 3

求助一个字符指针的问题

[复制链接]
发表于 2021-2-26 21:50:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
int main()
{
    char *q, *p = "Language";
    for(q = p; q != "\0"; q++);//为什么不用p++??
    for(q--; q >= p; q--)//(q = 7,q=6)()
    {
        putchar(*q);
    }
    return 0;
}

大佬帮我看看这个程序,为什么第一个for那里不用写p++。

我所理解的这里的指针指向的是单个字符,正确吗?

那既然如此,那p++不也是需要的吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-2-27 09:25:13 | 显示全部楼层
本帖最后由 巴巴鲁 于 2021-2-27 09:27 编辑

这里的指针指向的确实是单个字符,你理解的正确
#include<stdio.h>
int main()
{
        /*
    char *q, *p = "Language"; // 这里让p指向了"Langueage"的首地址 ,即*p = L 
    for(q = p; q != "\0"; q++); // p的地址赋值给了q, q++不是相当于p++吗? 
            for(q--; q >= p; q--) // 这里q >= p 是一直到q指到"e"这里的地址才会开始这个循环 
            {
                putchar(*q);
            }
    */
    
    // 其实我觉得写成这样很好理解,上面的程序我刚开始都懵了,不知道要干什么 
    char *q, *p = "Language";
    q = p; // q指向p的地址 
    for(; p != "\0"; ++p) // 让p指向"Language"的末地址 
    {
            ;
    }
    for(--p; p != q; ) // 从“Language”的末地址开始,一直到首地址结束,实现逆序打印 
    {
        putchar(*(--p)); // 地址前移 
    }
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-27 10:55:19 | 显示全部楼层
巴巴鲁 发表于 2021-2-27 09:25
这里的指针指向的确实是单个字符,你理解的正确
#include<stdio.h>
int main()
{
        /*
    char *q, *p = "Language"; // 这里让p指向了"Langueage"的首地址 ,即*p = L 
    for(q = p; q != "\0"; q++); // p的地址赋值给了q, q++不是相当于p++吗? 
            for(q--; q >= p; q--) // 这里q >= p 是一直到q指到"e"这里的地址才会开始这个循环 
            {
                putchar(*q);
            }
    */

老哥,按照您的理解,第一个for语句执行的时候 q++那么p同时也进行p++这样吗?对于这里还是不太能理解。

那么第二个for 的时候,循环条件是q >= p,既然如此,那由上一个for,p = q 应该此时的值是这样啊。

但是这里的p的初地址应该是p[0]吧。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-27 17:48:51 | 显示全部楼层
学编程的盆子 发表于 2021-2-27 10:55
老哥,按照您的理解,第一个for语句执行的时候 q++那么p同时也进行p++这样吗?对于这里还是不太能理 ...


不是,是q=p时,让q这个临时指针来控制到达Language的末地址
而这个程序想实现逆序打印,肯定要知道这个字符串的首末地址
这样程序的首地址不会改变,又找到末地址,实现逆序打印

你看看我的那个程序,那样子来写可能更好理解
因为你这个程序不便于理解,而且执行时效率不高(外层循环最后一次才会开始执行内层循环)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 13:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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