小编Eby*_*ohn的帖子

在C中混淆指针

我有一个以上的疑问所以请耐心等待.有人能告诉我为什么这段代码失败了吗?

#include<stdio.h>
void main(int argc,char **argv) /*assume program called with arguments aaa bbb ccc*/
{
    char **list={"aaa","bbb","ccc"};

    printf("%s",argv[1]);/*prints aaa*/
    printf("%s",list[1]); /*fails*/ 
}
Run Code Online (Sandbox Code Playgroud)

我认为它与指针内容的指针有关,我不明白.所以我试过:

#include<stdio.h>
void main()
{
char **list={"aaa","bbb","ccc"};
char *ptr;
ptr=list;
printf("%s",ptr);/*this prints the first string aaa*/
    /* My second question is how do i increment the value
       of ptr so that it points to the second string bbb*/
}
Run Code Online (Sandbox Code Playgroud)

是什么区别char *list[]char **list在什么场合都可以使用这两个理想是什么?令我困惑的另一件事是argv特别?当我传递char **list给另一个函数,假设它让我以我能用的方式访问内容时argv,它也失败了.

我意识到过去曾经问过类似的问题,但我似乎无法找到我需要的东西.若有,有人可以发布相关链接.

c pointers

7
推荐指数
1
解决办法
855
查看次数

标签 统计

c ×1

pointers ×1