2015-05-25 70 views
0

我是C和PRO * C中的一员,需要一些帮助。我有如下的结构:如何传递C函数之间的指针数组?

typedef struct pt_st{ 
    char (*s_no)[100]; 
    char (*s)[100]; 
    } pt_st; 

我有一个像c_info一个函数调用后功能:

int c_info(pt_st ir_st) 
{ 
int li_result = 0; 
li_result = post(ir_st.s_no) 
} 

和后期的功能是:

int post(char *is_st) 
{ 
//do something 
} 

当我编译我的程序,我得到三个错误:

warning: passing arguments post from incompatible pointer type 
warning: passing arguments post make integer from ponter without cast 
warning: passing arguments post make ponter from integer without cast 

有谁知道我该如何解决这个问题?

谢谢!

+0

要声明的'一个数组char'do'char arr [42]'。像你一样('char(* parr)[42]')将一个指针('parr')声明为一个由42个“chars”组成的数组。 – alk

+1

注:我重申了,因为我认为OP意味着Oracle的事情。 – wildplasser

回答

2

pt_st.s_no以及pt_st.s都声明指向数组char的指针。

所以post()需要的功能,期望这样,如:

int post(char (*s_no)[100]); 

如果int post(char * is_st)所示定义不能改变,那么这样称呼它:

pt_st s = ... /* some initialisation */ 

int result = post(*(s.s_no)); 
+0

感谢您的回复,但我仍然得到同样的警告。 – Dax

+0

@Dax:哪个警告?你的问题提到3种不同的警告?还有我的两个建议中的哪一个? – alk

+0

我仍然得到所有这三个警告:警告:从不兼容的指针类型后传递参数 警告:传递参数后发送从整型ponter没有案件 警告:传递参数post使ponter从整数没有案例为第一个提案i.s. int post(char(* s_no)[NULL_BIG_SEQ_NO]); – Dax