|
2007/03/02
■2次元配列を関数に渡して使う
まずは1次元。
ソース
#include <stdio.h>
void func( char *p )
{
printf( "*(p+3) = %d\n", *(p+3) );
printf( "p[3] = %d\n", p[3] );
}
void main( void )
{
char buf[8] = {0,1,2,3,4,5,6,7};
func( buf );
}
実行結果
*(p+3) = 3
p[3] = 3
次、2次元。
ソース
#include <stdio.h>
void func( char (*p)[8] )
{
printf( "*((*(p+1))+3) = %d\n", *((*(p+1))+3) );
printf( "p[1][3] = %d\n", p[1][3] );
}
void main( void )
{
char buf[][8] = {{0,1,2,3,4,5,6,7},{10,11,12,13,14,15,16,17}};
func( buf );
}
実行結果
*((*(p+1))+3) = 13
p[1][3] = 13
ついでに。
ソース
#include <stdio.h>
void func( char (*p)[8] )
{
printf( "*((*(p+1))+3) = %d\n", *((*(p+1))+3) );
printf( "p[1][3] = %d\n", p[1][3] );
printf( "p %d %x\n", sizeof(p), p );
printf( "*p %d %x\n", sizeof(*p), *p );
printf( "**p %d %x\n", sizeof(**p), **p );
printf( "p[0] %d %x\n", sizeof(p[0]), p[0] );
printf( "p[1][3] %d %x\n", sizeof(p[1][3]), p[1][3] );
}
void main( void )
{
char buf[][8] = {{0,1,2,3,4,5,6,7},{10,11,12,13,14,15,16,17}};
func( buf );
}
実行結果
*((*(p+1))+3) = 13
p[1][3] = 13
p 4 12ff7c
*p 8 12ff7c
**p 1 0
p[0] 8 12ff7c
p[1][3] 1 d
|