关于c语言二级指针的问题

char *strings[]={"XXX","XXX","XXX"};
char **p;
p=strings;

怎么理解这段指针的指向关系?
**p最终不是指向strings[0]吗?
为什么无法输出**p.

#include <stdio.h>
int main(int argc, char *argv[])
{
    char *strings[]={"123","456","789"};
    char **p;
    p = strings;
    
    printf("[%c] [%s]\n", **p, *p);
    
    return 0;
}

打印信息是[1] [123]
很正常嘛,完全正确啊,没啥异常。

我知道了,你可能有误解,**p不是指向string[0],而是指向string[0][0], *p才是指向string[0]

追问

是喔 上面我打错了 但是我在调试的时候没问题 一打印就出现了那个停止工作的窗口

就是这样

追答

感觉没啥问题,是不是中文的原因,你把赵钱孙李改成英文字符试试呢,如果还是有问题,那我也不清楚了

追问

噢噢 明白了 地址问题我把我自己搞混了 可能是中文输出不了吧

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-04-20
应该可以呀 堤示什么错误追问

调试的时候没有问题 但一打印就出现了那个停止工作的窗口

就是这样

噢噢 现在明白了 地址问题我把我自己搞混了 但是还是无法输出**p, 我把中文都改英文了 是什么问题呀

又明白了 输出格式没有改%c

谢谢

相似回答