加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 使用C通过引用传递数组

发布时间:2020-12-16 10:31:25 所属栏目:百科 来源:网络整理
导读:是的,我已经读过这个问题答案: Passing an array by reference in C?.我遇到了类似的问题,并从该问题中实现了相同的想法. 但是,我仍然从以下代码中得到错误: #include iostreamvoid FillArray(int** myArray){ free( *myArray ) ; * myArray = (int*) mall
是的,我已经读过这个问题&答案: Passing an array by reference in C?.我遇到了类似的问题,并从该问题中实现了相同的想法.

但是,我仍然从以下代码中得到错误:

#include <iostream>

void FillArray(int** myArray)
{
   free( *myArray ) ;
   * myArray = (int*) malloc(sizeof(int) * 2);

   *myArray[0] = 1;
   *myArray[1] = 2;
}

int main()
{
   int* myArray = NULL;
   FillArray(& myArray);    
   return 0;
}

FillArray函数结束后,我收到了以下运行时错误:

Unhandled exception at 0x773115de in Program.exe 0xC00000005: Access violation writing location 0xcccccccccc.

我正在使用Visual Studio,打开Visual C Empty Project.并且文件名为main.cpp.这是否意味着它是用C编译器而不是C编译器编译的?如果是这样,我怎样才能打开一个只会编译C编译器的文件?我尝试用main.c重命名main.cpp,但仍然有同样的问题. (我问这个问题,因为我读了一些关于“通过引用传递”的内容,并发现它在C和C中有所不同.)

对不起这个非常基本的问题.

如有任何帮助,我将不胜感激,

SAIT.

解决方法

优先权没有像你期望的那样发挥作用.试试这些:

(*myArray)[0] = 1;
(*myArray)[1] = 2;

(注意:iostream不是C.它是C.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读