c语言 关于malloc

来源:百度知道 编辑:UC知道 时间:2024/06/10 04:38:12
如果在主函数中定义了
int *p;
p=(int*) malloc(size*sizeof(int));
那么在新的自己定义的函数中如何将其作为变量呢?
比如形如void a(int *p)。
按照上面举得那个例子定义总是报错。(说类型不对 error C 2059)
顺便问下,函数在使用时 变量又是何种形式

你贴过来的代码太少了
按你的说法应该是没问题的
我想你的问题可能不是出在这个地方

你把代码贴多点
问题容易分析点

void a(int *p),这是什么东东?p是个指针,可以通过指针对这快内存操作,如果放在函数中p就是个局部变量,在栈中,他指向的内存是动态分配的在堆中,内存不用了要记得释放,要不就内存泄漏了。

# include <stdio.h>
#include<malloc.h>
# include <string.h>
char trans(int x)
{
if(x<10) return '0'+x;
/********1********/
else return 'a'+x-10;
}

int DtoH(int n,char* str)
{
int i=0;
while(n!=0)
{
str[i]=trans(n%16);
/********2********/
n/=16;
i++;}
return i-1;
}

void main()
{
int i,k,n;
char *str;
str = (char *)malloc(sizeof(char *));
scanf("%d",&n);
k=DtoH(n,str);
for (i=0;i<=k;i++) printf("%c",str[k-i]);
}
这样就好了。
你的程序主要有三个问题:
1,没有给str分配空间
2,'a'+x-10;应该是-10的。
3,n/=16; 而不是n%16,否则会死循环。

问题不明确啊