重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
因为C语言中,参数的传递是数值传递方法,也就是说,在给函数传递参数时,使用的不是你传递的实参的内存空间,而是重新分配内存,将实参的数值复制到新内存中,被调用的函数就是使用新分配的内存,函数返回时,这些新内存就会被释放,而源内存中的内容没有改变。
创新互联专业为企业提供集美网站建设、集美做网站、集美网站设计、集美网站制作等企业网站建设、网页设计与制作、集美企业网站模板建站服务,十余年集美做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
要想通过调用函数改变实参的值,就需要使用指针或引用的技术。
用三维指针。
#include stdio.h
#include stdlib.h
void creat2Arr(int ***dest1, int x, int y)
{
int **dest;
dest = (int **)malloc(sizeof(int)*x);
int i=0;
for ( ; i x;i++)
{
dest[i] = (int *)malloc(sizeof(int)*y);
int j=0;
for (; j y;j++)
{
dest[i][j] =i+j;
}
}
printf("%d",dest[0][0]);
*dest1 = dest;
}
void free2Arr(int **dest, int x)
{
int i;
for (i=0; i x;i++)
{
free(dest[i]);
dest[i] = NULL;
}
free(dest);
dest = NULL;
}
int main(void)
{
int **a=NULL;
creat2Arr(a,10,10);
printf("%d",a[0][0]);
free2Arr(a,10);
return 0;
}
a=search(number);
参数传递没有问题 就是a要定义才能使用
而且
int search(char a[])如果是这样定义的话 函数体里边一定要有一个整形数的返回值才可以给变量a赋值
返回值是整形数的 不声明应该也可以
除了楼下说的这个问题:for(;p!='\0';p++)
day传不进去的原因是input函数中的str和p这些是局部变量,函数调用完之后就销毁了,返回的p指向的内存不能保证可用!