我在做一个动态数组,但是我有一点问题,我确定它很简单但我看不到它。我输入我想要的元素的维度,我根据该维度输入元素的数量,但查看时却没有
代码:
//Prototipos de funciones
void introducirDatos(int cantidad,int *x);
void visualizarDatos(int cantidad,int *x);
int main()
{
int cantidad,*x;
introducirDatos(cantidad,x);
visualizarDatos(cantidad,x);
return 0;
}
void introducirDatos(int cantidad,int *x)
{
printf("Introduce la cantidad de elementos del arreglo: ");
scanf("%d",&cantidad);
x = (int*)malloc(sizeof(int));
if(x==NULL)
{
printf("No se a podido reservar memoria");
}
else
{
for(int i=0;i<cantidad;i++)
{
printf("Dato: ");
scanf("%d",&x[i]);
}
}
}
void visualizarDatos(int cantidad,int *x)
{
for(int i=0;i<cantidad;i++)
{
printf("%d ",x[i]);
}
free(x);
}
对于此功能:
x
是一个简单的指针,也就是说,所指向的东西x
在函数外可能是可见的……但里面的变化x
是局部变化的。一个更容易看到的例子:程序打印什么值?
答案很简单,0,因为
func
它会进行本地更改。好吧,指针也会发生同样的事情:这个例子是完全一样的......指针
a
没有看到它的内存地址发生了变化。变化func
是局部的。如何解决这个问题?增加间接级别。如果要修改函数内部的变量,我们需要传递指针而不是按值传递变量...
...要重新分配单个指针,我们需要该函数来接收双指针:
并重新分配双指针?然后我们将需要一个三重指针,以此类推到无穷大。