C中的Typedef和复杂声明

Kun*_*ore 3 c

问题相关.

以下代码有什么问题?

typedef char (*p)[20] ptr;
ptr myFunction () {

    char sub_str[10][20]; 
    return sub_str;

} 

int main () {

    ptr str;
    str = myFunction();

}
Run Code Online (Sandbox Code Playgroud)

Arm*_*yan 8

在语法:
更改
typedef char (*p)[20] ptr;

typedef char (*ptr)[20];

要理解像这样的typedef声明的语法.想象一下,您想要将类型T重命名为U.声明一个名为U的T类型的变量,并使用'typedef'作为声明的前缀.就这样.

语义上:
查看我和其他链接问题的答案.这仍然是未定义的行为