请教一个菜菜问题,参数是指针怎么传递

zxx_0405 2009-04-01 04:45:06
一个函数这样定义
int fun(int a_i, unsigned long* a_l)

我搞不清楚怎么调用它

调用函数

main
{
unsigned long* LL;
int i= 2;
int Li=fun(i,LL);

int aa= LL[0]??//想显示出来,不知道怎么转换
}

这样是错误的,各位指导下该怎么调用函数fun,谢谢
...全文
147 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
zxx_0405 2009-04-13
  • 打赏
  • 举报
回复
分少了点,不好意思

谢谢大家了
zxx_0405 2009-04-13
  • 打赏
  • 举报
回复
我也要学vc了
zxx_0405 2009-04-10
  • 打赏
  • 举报
回复
可能是其他原因吧,但还没查出来
每天开机打开bcb的时候就提示一连串的AV错误
fire_woods 2009-04-10
  • 打赏
  • 举报
回复
还好我们用vc
xiehui3651 2009-04-10
  • 打赏
  • 举报
回复
C++ Builder有问题
fighterhht 2009-04-06
  • 打赏
  • 举报
回复
[Quote=引用楼主 zxx_0405 的帖子:]
一个函数这样定义
int fun(int a_i, unsigned long* a_l)

我搞不清楚怎么调用它

调用函数

main
{
unsigned long* LL;
int i= 2;
int Li=fun(i,LL);

int aa= LL[0]??//想显示出来,不知道怎么转换
}

这样是错误的,各位指导下该怎么调用函数fun,谢谢
[/Quote]

main
{
unsigned long* LL; -->这里好象是个空指针吧.
int i= 2;
int Li=fun(i,LL); -->传一个空指针是会出错的吧.

int aa= LL[0]??//想显示出来,不知道怎么转换-->使用一个空指针能够吗.
}
勉励前行 2009-04-04
  • 打赏
  • 举报
回复
int fun(int a_i, unsigned long* a_l) ;

如果懷疑內存錯的話,不管函數是否使用,申請一個大內存給他。

int a_i = 2 ;
unsigned long *a_l = new unsigned long[100000];
memset(a_l,0,100000*sizeof(unsigned long)) ; //清0,以防止函數需要結束標志。
然後調用:
fun(a_i,a_l);

//如果不出錯。則可能為沒有足夠的內存供函數存放結果。

另外,可能該函數使用了一些全局變量,請注意使用該函數前,是否需要調用其他函數來進行初始化環境設置。

如果不清楚函數是用來干什麼的,您為什麼要調用它呢?只是因為別人調用,所以你就調用?

报内存错误 : 單步調試一下,看看是該函數執行時發生AV錯誤,還是執行後才發生。

函數中使用全局變量,特別是使用全局指針變量,是很不好的設計,慎用。

痞子酷 2009-04-04
  • 打赏
  • 举报
回复
接分!
痞子酷 2009-04-04
  • 打赏
  • 举报
回复
接分!
ptiand 2009-04-04
  • 打赏
  • 举报
回复
学到不少东西
fire_woods 2009-04-03
  • 打赏
  • 举报
回复


#define MAX_SIZE (1024*1024)
main
{
unsigned long* LL = (unsigned long*)malloc(MAX_SIZE*sizeof(unsigned long));
int i= 2;
int Li=fun(i,LL);

int aa= LL[0];
free(LL);

}

海嵌 2009-04-03
  • 打赏
  • 举报
回复
还是支持大M的做法!
laowang2 2009-04-03
  • 打赏
  • 举报
回复
看样子似乎是个数组。
fire_woods 2009-04-03
  • 打赏
  • 举报
回复
1. 那个函数是代码的一部分还是一个库.
2. 楼主rebuild All了吗?
3. 函数的定义是实现是否一致.
zxx_0405 2009-04-03
  • 打赏
  • 举报
回复
可能不是这个函数的问题,但是真不知道是什么问题

大家讲的我都试过了,都不行
zxx_0405 2009-04-03
  • 打赏
  • 举报
回复
不是数组,只传一个地址进去就可以了

跟踪过了,只要执行那个函数就报内存错误

奇怪的是,第一天我调用是可以的,后来就老报那个错误
Maconel 2009-04-03
  • 打赏
  • 举报
回复
前面大家说的这些方法都是猜测,关键还是要搞清楚这个函数到底该如何调用,是否有文档、注释或源码。
比如如果参数a_l是需要传一个数组进去,那么上面这些写法都不对。
另外还要搞清,Acess violation错误是否是这个函数引起的,会不会是其他代码导致。
我不懂电脑 2009-04-02
  • 打赏
  • 举报
回复
unsigned long* LL;没有初始化

int fun(int a_i, unsigned long* a_l)

我搞不清楚怎么调用它

调用函数

main
{
unsigned long* LL = new unsigned long();
int i= 2;
int Li=fun(i,LL);

int aa= LL[0]??//想显示出来,不知道怎么转换
}
zxx_0405 2009-04-02
  • 打赏
  • 举报
回复
试过了以上答案都不对
zhangwuji156 2009-04-02
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>
int fun(int a_i, unsigned long* a_l)
{
printf("a_i=%d,a_l=%ld\n", a_i, a_l);
}
main()
{
unsigned long* LL = new unsigned long;
int i= 2;
int Li=fun(i,LL);

int aa= LL[0];//想显示出来,不知道怎么转换
printf("aa=%d\n",aa);
system("pause");
}
我很认真,很负责的说,我在两种编译器上试过了,C-free4.0, C++ Builder6.0
没有内存报错
加载更多回复(8)

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧