【问题标题】:How can I pass array of pointers between my functions in C?如何在 C 中的函数之间传递指针数组?
【发布时间】:2015-05-25 09:57:57
【问题描述】:

我是 C 和 PRO*C 方面的资深人士,需要一些帮助。我的结构如下:

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

我有一个类似 c_info 的函数,它调用 post 函数:

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

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

谢谢!

【问题讨论】:

  • 声明char的数组做char arr[42]。像你一样做 (char (*parr)[42]) 声明一个指针 (parr) 指向一个由 42 个 chars 组成的数组。
  • 注意:我重新标记了,因为我认为 OP 意味着 Oracle 的东西。

标签: c oracle-pro-c


【解决方案1】:

pt_st.s_nopt_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));

【讨论】:

  • 感谢您的回复,但我仍然收到同样的警告。
  • @Dax:哪个警告?您的问题提到了 3 个不同的警告?还有我的两个提案中的哪一个?
  • 我仍然收到所有这三个警告: 警告:从不兼容的指针类型传递参数 警告:从 ponter 传递参数 post make integer 没有大小写警告:传递参数 post make ponter from integer without case for yur first提案 i.s. int post(char (*s_no)[NULL_BIG_SEQ_NO]);
  • @Dax:抱歉,您确定您正在编辑/编译正确的文件吗?您引用的错误消息也不是 100% 任何编译器都会发出的:“ponter”? “案例”?
  • 同时检查编译器告诉你警告发生在哪一行。
猜你喜欢
  • 1970-01-01
  • 2019-11-13
  • 2011-07-31
  • 2022-01-20
  • 2017-10-23
  • 2010-09-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多