【发布时间】:2017-01-20 14:59:45
【问题描述】:
我正在尝试了解 malloc 的工作原理。我做了一个程序搜索一维数组 int 中的最大元素。
这是代码。
#include <stdlib.h>
#include <stdio.h>
void largest_element(int *nbr)
{
int i;
int n;
int m;
i = 1;
nbr = (int*)malloc(sizeof(nbr) + 8);
while (i < 8)
{
if (*nbr < *(nbr + i))
*nbr = *(nbr + i);
i++;
}
printf("%d ", *nbr);
}
int main(void)
{
int i;
int tab[8] = {11, 2, 4, 5, 9, 7, 8, 1};
int n = sizeof(tab)/sizeof(int);
i = 0;
largest_element(&tab[8]);
return(0);
}
该程序可以在没有 malloc 的情况下工作,但我怎样才能使它与 malloc 一起工作?我做错了什么,为什么我的代码只给我垃圾号码?
【问题讨论】:
-
在这段代码中没有理由调用
malloc。您正在从数组中读取,而不是修改它。另外,你应该传入tab,而不是&tab[8]。 -
我正在尝试了解 malloc 的工作原理以及如何使用 malloc 解决此问题。
-
那么请也提供问题的定义。
-
它打印出垃圾值或 0 而不是正确的数字。
-
问题的定义,伙计。英文。
标签: c arrays int malloc dynamic-memory-allocation