关于指向指针的指针问题

来源:百度知道 编辑:UC知道 时间:2024/05/24 19:45:42
#include "stdio.h"
#define N 50
jisuan (char *q,int **y)
{
while(*q!='\0') {(**y)++;q++;}
}
main ()
{
int i=0,*z=&i;
char a[N],*p=a;
printf("请输入一串字符串\n");
gets(p);
jisuan(p,z);
printf("字符数为%d个\n",*z);
}
我将z换成int类的普通变量,让函数retrun回来数字的个数,这样是可以的,但是我换成指针就不对了!为什么会这样,代码哪错了呢!忘大侠指教!

jisuan()的第二个参数是指针的指针,而你在main函数中传入的是i的指针,因此需要一个取址符&来取到其地址,jisuan( p, &z ); 这样就可以了。

而jisuan( char *p, int &y );这样要方便一些。你可以在main()中调用:
jisuan( p, z );

#include "stdio.h"
#define N 50
jisuan ( char *q, int **y )
{
while( *q != '\0' )
{
(**y)++;
q++;
}
}

main ()
{
int i = 0, *z = &i;
char a[N], *p = a;

printf( "请输入一串字符串\n" );
gets( p );
jisuan( p, &z );
printf( "字符数为%d个\n", *z );
getchar();
}