但求过程001 发表于 昨天 09:59

求助

#include <stdio.h>

void main()
{
        char *s[]={"man","woman","girl","boy","sister"};
        char **q;
        int k;
        for(k=0;k<5;k++)
        {
                q=s;
                printf("%s\n",*q);
        }
       
}

以上程序运行后得到5个man,标红的地方是不是错了?

FishC 发表于 昨天 09:59

求助
#include <stdio.h>

void main()
{
        char *s={"man","woman","girl","boy","sister"};
        char **q;
        int k;
        for(k=0;k

你好!你提供的代码片段存在两个问题:

1. 主函数应使用 int main() 而不是 void main()。
2. 变量 s 的声明有误:它被声明为一个字符指针,但却试图初始化为多个字符串。正确的做法是声明为指针数组。

以下是修正后的代码,假设你想遍历这些字符串并打印:


#include <stdio.h>

int main()
{
    char *s[] = {"man","woman","girl","boy","sister"};// 声明字符串指针数组
    char **q;
    int k;
    for(k = 0; k < 5; k++)
    {
      q = s + k;          // q 指向第 k 个字符串的地址
      printf("%s\n", *q); // 打印该字符串
    }
    return 0;
}


解释:
- char *s[] = {...} 创建一个指针数组,每个元素指向一个字符串常量。
- char **q 是指向字符指针的指针。
- 循环中,q = s + k 使 q 指向数组 s 的第 k 个元素(即第 k 个字符串的地址)。
- *q 解引用得到该字符串,然后通过 printf 打印。

运行结果:

man
woman
girl
boy
sister


如果还有其他问题,请继续提问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

但求过程001 发表于 昨天 10:12

FishC 发表于 2026-3-15 09:59
你好!你提供的代码片段存在两个问题:

1. 主函数应使用 int main() 而不是 void main()。


厉害厉害~~
页: [1]
查看完整版本: 求助