ポインタ配列を関数に渡す


#include <stdio.h>

void dispA( char** s )
{
 int i = 0;
 printf( "sのアドレス%p:格納アドレス%p\n", &s, s );
 while ( s[ i ] != NULL ) {
  printf( "s[%d]のアドレス%p:格納アドレス%p:%s\n", i, &s[ i ], s[ i ], s[ i ] );
  i++;
 }
 printf( "sのアドレス%p:格納アドレス%p\n\n", &s, s );
}

void dispB( char** s )
{
 printf( "sのアドレス%p:格納アドレス%p\n", &s, s );
 while ( *s != NULL ) {
  printf( "sのアドレス%p:格納アドレス%p:%s\n", &s, *s, *s );
  s++;
 }
 printf( "sのアドレス%p:格納アドレス%p\n", &s, s );
}

void main()
{
 char *name[] = { "Candy", "Rolla", "Nancy", "Ann", "Eluza", NULL };
 dispA( name );
 dispB( name );
}


実行結果

sのアドレス0012FF18:sの格納アドレス0012FF68
s[0]のアドレス0012FF68:s[0]の格納アドレス0042201C:Candy
s[1]のアドレス0012FF6C:s[1]の格納アドレス00423030:Rolla
s[2]のアドレス0012FF70:s[2]の格納アドレス00422FBC:Nancy
s[3]のアドレス0012FF74:s[3]の格納アドレス00422FB4:Ann
s[4]のアドレス0012FF78:s[4]の格納アドレス00422FAC:Eluza
sのアドレス0012FF18:sの格納アドレス0012FF68

sのアドレス0012FF18:sの格納アドレス0012FF68
sのアドレス0012FF18:sの格納アドレス0042201C:Candy
sのアドレス0012FF18:sの格納アドレス00423030:Rolla
sのアドレス0012FF18:sの格納アドレス00422FBC:Nancy
sのアドレス0012FF18:sの格納アドレス00422FB4:Ann
sのアドレス0012FF18:sの格納アドレス00422FAC:Eluza
sのアドレス0012FF18:sの格納アドレス0012FF7C

C > 関数 | comments (0) | trackbacks (0)

Comments

Comment Form

icons:

Trackbacks