我问了一个问题:使用C通过引用传递数组.我意识到我的问题是在C中使用指针星.最后事实证明,这个方法适用于我的程序:
#include <stdio.h>
void FillArray(int** myArray)
{   
     *myArray = (int*) malloc(sizeof(int) * 2);
     (*myArray)[0] = 1;
     (*myArray)[1] = 2;
}
int main()
{
     int* myArray = NULL;
     FillArray(& myArray);  
     printf("%d", myArray[0]);
     return 0;
}
到目前为止,每件事情都很好.然后,我修改了FillArray()函数,如下所示,以获得更好的代码可读性:
#include <stdio.h>
void FillArray(int** myArray)
{
     int* temp = (*myArray);
     temp = (int*) malloc(sizeof(int) * 2);
     temp[0] = 1;
     temp[1] = 2;
}
int main()
{
     int* myArray = NULL;
     FillArray(& myArray);  
     printf("%d", myArray[0]);
     return 0;
}
现在,我在printf行遇到以下运行时错误:
Trial.exe中0x773115de处的未处理异常:0xC0000005:访问冲突读取位置0x00000000.
尽管我不是C专家,但修改它似乎是合法的.但是,显然它不起作用.语法有点混乱吗?我在这里想念一下吗?
谢谢你的有用答案,
SAIT.
temp获取地址的副本myArray,然后你分配一些malloced内存temp,所以原来的任务是没有意义的,并没有持久的影响.然后修改malloced内存,但这根本不会改变myArray.要改变myArray的main,你必须分配
*myArray = temp;
在结束时FillArray.
void FillArray(int** myArray)
{
     int* temp;
     temp = (int*) malloc(sizeof(int) * 2);
     temp[0] = 1;
     temp[1] = 2;
     *myArray = temp;
}
做你想要的.
| 归档时间: | 
 | 
| 查看次数: | 191 次 | 
| 最近记录: |