作业帮 > 综合 > 作业

这个程序哪里错了?#includevoid main(){ int i; char**a={"asd","fxs","h

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/05/01 13:28:17
这个程序哪里错了?
#includevoid main(){ int i; char**a={"asd","fxs","hdd","ddsg","dfe"}; for(i=0;i
#include<stdio.h>

int main()
{
    int i;
    char *a[] = {"asd","fxs","hdd","ddsg","dfe"};
    for(i=0;i<5;i++) {
        printf("%s\n",a[i]);
    }
    return 0;
}
声明 **a 不能作为数组赋值初始化,要用 *a[].
for 循环遍历要给 a 提供下标.你全部循环里都用固定的 a 怎么遍历?
再问: char**a,与char *a[]不是等价的吗
再答: 不等价。char *a[] 是声明 char 类型指针数组。char **a 是声明 char 类型指针的指针。 **a 需要指向已分配空间的内存地址,自己没有分配内存空间存放数据,只是可以指向已有的数据。 char *a[] 是自己分配内存空间存放数据。 如果你之前已经有数组了,例如 char *str[] = .... 再 char **a 指向 str 首地址是可以的。