通过malloc-pointer给我带来了错误
passing malloc-pointer gives me error
当我运行此代码时,它会给我分段故障错误。
#include <stdio.h>
#include <stdlib.h>
void function(int **A);
void main()
{
int *A = NULL;
int i = 0;
A = (int *) malloc(70 * sizeof(int));
function(&A);
for (i = 0; i < 10; i++){
printf("A is : %dn", A[i]);
}
free(A);
}
void function(int **A){
int i = 0;
for (i = 0; i < 10; i++){
*A[i]=i*2;
}
}
*A[i]=i*2;
应该是
(*A)[i]=i*2;
因为您需要在应用数组下标操作员([]
)之前取消指针。在您当前的代码中,根据操作员优先表,[]
的优先级比Dereference Operation(*
)更重要。因此,您需要括号。
其他要注意的事情:
- 在C中,不要施放
malloc
的结果 - 始终检查
malloc
的结果,以查看它是否成功
如果将指针传递到数组,即使用 ,那将更简单
function(A);
而不是传递A
的地址并将function
的签名更改为:
void function(int *A)
并使用
A[i]=i*2;
在function
中的for
循环中。由于function
中的A
指向main
中数组A
的第一个元素的地址,因此您对function
点中A
的任何更改都将反映在main
中的阵列A
中。>
相关文章:
- 我在贪吃蛇游戏中收到了错误代码 -1073741571
- C++ 犰狳库中的sort_index()函数给出了错误的结果
- 纹理单位重叠?渲染了错误的纹理
- 由于签名差异,调用了错误的子类函数
- srand() 输出了错误的值
- C++:使用类在向量中搜索特定元素时,我得到了错误的结果
- 我正在尝试传递DMA数组及其大小作为参数,但它给出了错误
- 运行时多态性 - 箭头运算符访问了错误的成员?
- IM 试图显示对象数组,但它给出了错误的输出
- 虽然循环即使应用了错误条件也不会退出
- C++ 将派生类的成员函数指针作为参数传递时选择了错误的模板专用化
- QScreen geometry()api为分辨率2736 x 1824和2560 x 1600提供了错误的值
- std::allocator_traits::construct调用了错误的构造函数
- 为什么我的代码返回了错误的平方值?C++
- 带有大结构变量的 CUDA 内核函数给出了错误的结果
- Visual Studio控制台调试了错误的文件
- 我的模板二叉搜索树类给出了错误"Node<T>: no appropriate default constructor available,"如何解决这个问题?
- strcpy_s之后的strcat_s给出了错误
- 为什么分段错误来了
- Makefiles:是否有一种通用的方法来显示makefile中的哪一行导致了错误