0

我在 UNIX 平台上的 C 代码中遇到以下问题。

 function1(short *a)
 {
    EXEC SQL begin declare section;
          short a1;
    EXEC SQL end declare section;

    EXEC SQL fetch quey_cursor
     into
          :a1;

    // More processing

    *a = a1;

 }

问题是程序在这一行退出

  *a = a1;

而且我无法进行调试。

我真的很感激任何帮助

谢谢

4

2 回答 2

1

您必须向 function1() 传递一个指向 short 的有效指针,才能使对 *a 的赋值起作用。错误出现在调用 function1() 的位置。

于 2012-05-21T16:37:41.140 回答
1

根据您的评论,您没有为指针分配内存。因此,当您尝试将其取消引用为 时*a=a1,它会崩溃。由于它只是一个指针,您可以简单地声明并将其用作:

function() { 
   short a; 
   function1(&a);
}

注意声明和参数传递的区别。

于 2012-05-21T16:37:45.970 回答