1

私は次のプログラムを持っています

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char string[30],ch,*chp;
    printf("Enter Text below:");
    gets(string);
    printf("\n Character to find:");
    ch=getchar();
    chp=strchr(string,ch);
    if(chp)
        printf("Character %c found in string",ch);
    else
        printf("Character %c not found in string",ch);
    getche();
}

私はchpがこのプログラムのポインタであることを知っていますが、ifステートメントでは、chpはどのポインタとも比較されませんが、このifステートメントがどのように実行されるか、このプログラムを理解するのを助けてください.

4

5 に答える 5

1

あなたがしていることは、ポインターがポインターでないかどうかを確認することですNULLNULL次のように定義されたメモリ アドレス 0 であることを思い出してください。

( ( void * ) 0 )

...したがって、以下は同等です。

if ( NULL ) <=> if ( false ) <=> if ( 0 )

C のゼロ以外の値はすべて考慮されtrue、0 のみが考慮されることに注意してくださいfalse。したがって、有効なメモリ アドレスは常にtrue.

結論として、 のステートメントはif ( pointer )と同等if ( pointer != NULL )です。

于 2013-08-11T14:51:44.090 に答える