第1个回答 2011-08-06
像你这种需要通过传参并对实参分配空间,需要传指针的地址。
#include "stdio.h"
#include "stdlib.h"
void array1(int x, int **a)/*形参也是指向指针的指针*/
{
int i;
*a = (int*)malloc(sizeof(int) * x);/*对指向指针的指针解引用,给其赋分配空间的地址值*/
if (*a == NULL)
exit(0);
for (i = 0; i < x; i++)
* ((*a) + i) = i;
}
int main()
{
void array1(int x, int**a);
int *ff, sdof = 10, i;/*sdof总得给个值*/
array1(sdof, &ff);/*此处实参使用&,传入指针ff的地址*/
for (i = 0; i < sdof; i++)
printf("%d\n", *(ff + i));
system("pause");
return 0;
}
第2个回答 2011-08-06
void array1(int x,int **a) //要修改原指针就要用二级指针
{
int i;
*a=(int*)malloc(sizeof(int)*x);
if(a==NULL)
exit(0);
for(i=0;i<x;i++)
*(*a+i)=0;
}
int main(int argc, char *argv[])
{
int *ff,sdof=10,i;
array1(sdof,&ff); //要用传址调用
for(i=0;i<sdof;i++)
printf("%d\n",*(ff+i));
system("PAUSE");
return 0;
}
第3个回答 2011-08-06
void array1(int x,int *a)
{ if(a==NULL)
exit(0);
for(int i=0;i<x;i++)
*(a+i)=0;
}
int main()
{ void array1(int x,int *a);
int *ff,sdof=10;
ff=(int*)malloc(sizeof(int)*sdof);
array1(sdof,ff);
for(int i=0;i<sdof;i++)
printf("%d\n",*(ff+i));
return 0;
}