关于typedef的用法

typedef char * Strings[10];

typedef *char[10]  Strings;

正在学c。

  1. typedef char * Strings[10];
  2. typedef char[10] Strings;
    它们分别代表什么意思。
    第1个char
    是定义指针,后面的Strings[10]是最后一个单词,那不就是代表Strings[10]成为了char*的别名了吗,那用的时候不是用strings[10]吗,为什么用strings来定义。
    第二个 *char[10]又是什么意思,定义字符串数组不是char * a[10],为什么是这样
    请帮我分析下它们的结构,越详细越好。
    感谢

你重新把问题贴一下,用代码格式化工具

img

目测你的 2 那一行有一个星号没显示

这个博客超详细,你看看:

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答由chatgpt基于相关博客总结生成:
    1. typedef char * Strings[10]的含义是定义了一个名为Strings的新类型别名,它是一个指针数组,数组中的每个元素都是char类型指针。这个数组的大小为10,也就是说它可以存储10个char类型的指针。你可以通过使用Strings类型来声明、定义和操作这个指针数组。

    具体代码示例:

    typedef char * Strings[10];  // 定义新类型别名
    
    int main() {
        Strings myStrings;  // 声明一个Strings类型的变量
    
        char str1[] = "Hello";
        char str2[] = "World";
    
        myStrings[0] = str1;
        myStrings[1] = str2;
    
        printf("%s ", myStrings[0]);
        printf("%s\n", myStrings[1]);
    
        return 0;
    }
    

    输出结果为:

    Hello World
    
    1. typedef char[10] Strings的含义是定义了一个名为Strings的新类型别名,它是一个长度为10的char数组。这个数组可以用来存储一个长度为10的字符串。你可以通过使用Strings类型来声明、定义和操作这个char数组。

    具体代码示例:

    typedef char Strings[10];  // 定义新类型别名
    
    int main() {
        Strings myString;  // 声明一个Strings类型的变量
    
        strcpy(myString, "Hello");
    
        printf("%s\n", myString);
    
        return 0;
    }
    

    输出结果为:

    Hello
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^