【发布时间】:2016-05-18 14:01:14
【问题描述】:
在大学里我们做了这个代码:
int cargaArreglo(int ** A);
int main(){
int * A = NULL;
int i = 0;
int dimension = cargaArreglo(&A);
for( i = 0; i < dimension; i++ )
printf( "[%d]", A[i] );
free( A );
return 0;
}
int cargaArreglo(int ** A){
int i = 0;
char bandera = 's';
(*A) = malloc( 1*sizeof(int) );
while( bandera != 'n' ){
printf( "Ingrese un numero" );
scanf( "%d", &(*A)[i] );
printf( "Desea seguir ingresando?" );
i++;
fflush( stdin );
scanf( "%c", &bandera );
if( bandera != 'n' )
(*A) = realloc( (*A), (i+1)*sizeof(int) );
}
return i;
}
我们尝试加载一个动态数组,并无限制地添加值。代码工作得很好,但是在我们需要用双指针声明参数的函数中,是否存在将其转换为简单指针的可能性?我的意思是,老师说这是不可能的,因为没有双指针我不能改变全局变量的值。这让我对指针的尊重感到困惑。
感谢您的宝贵时间!
PD:如果您发现我的英语有错误,请告诉我,因为我会在学习上帮助我很多。
【问题讨论】:
-
Nitpick:它不是真正的 双指针,它是一个指向指针。 :)
-
fflush( stdin );是未定义的行为。 -
fflush( stdin );是 UB。 -
呈现的代码中没有全局变量。
main()中声明的变量是该函数的局部变量。
标签: c pointers double-pointer