从结构中访问双指针并在execvp中使用它

时间:2011-10-04 16:06:11

标签: c pointers struct double

我试图在结构中声明一个char指针和一个double char指针,如下所示:

typedef struct string3d {  
      char **x;  
      char *y;  
      } string3d;

我在我的主程序中声明了这个结构的数组,然后我解析了一个字符串输入并将它们标记化并将它们传递给这个结构。在主程序中,我调用一个函数来创建基本上分叉孩子的过程。我将这些字符串标记传递给execvp,如下所示:

execvp(*s1->y,s1->x);

这里s1定义为

struct string3d *s1;

但编译时会说:

  

错误:下标值既不是数组也不是指针。

有什么建议吗?提前谢谢。

2 个答案:

答案 0 :(得分:2)

该函数的签名是:

int execvp(const char *file, char *const argv[]);

这相当于:

int execvp(const char *file, char **const argv);

所以你必须这样称呼它:

execvp(s1->y, s1->x);

(假设s1s2的类型为string3d *

答案 1 :(得分:1)

您需要确保s1是指针,而不是结构。如果它是一个结构,那么你需要 s1.x和s1.y,而不是s1-> x和s1-> y。