グローバル文字列を指すローカル ポインターを使用したいと考えています。ポインターはローカル ポインターであり、文字列はグローバルです。関数 "myfun" にローカル ポインターを渡してこのコードを実行すると、ポインターは変更されません。つまり、そのポインター アドレスは変更されません。表示される値は「NULL」です。
これがgccで機能しない理由を誰か教えてもらえますか?
#include <stdio.h>
char *str[] = { "String #1", "Another string" };
void myfun( void * p, int i )
{
p = ( void * ) &str[ i ][ 0 ];
}
int main( void )
{
void * ptr1, * ptr2;
myfun( ptr1, 0 );
myfun( ptr2, 1 );
printf( "%s\n%s\n", ptr1, ptr2 );
}