int *p; 意味着p是一个指针,它指向某个特定的内存区域,由于没有初始化(不好说p指向那里了)或者是NULL, 这说明它所指向的区域要么是非法的、要么是不存在的, 此时将p用作输出参数就会出错了。你必须为p分配足够的内存空间才可以。
&p 是指“p所在的内存区域”,由于p是存在的, 所以它对应的地址也是合法、有效的,自然就不会出错。
我对改动了一下你的程序,我没有测试过,但是我想应该没有什么问题的。
char *cp1="input a number";
char ca2[133]="123";
int *ir3=NULL;
ir3 = (int *) calloc( 1, sizeof( int ) ); // locate memory for ir3, reture value will store here
rcode=uc1600(cp1,ca2,ir3);
free( ir3); // free memory
ir3 = NULL; |