main関数で宣言したポインタの配列 int *p[2] に格納されている変数a, bのアドレスを入れ替るプログラムを作りたいのですが、最後の
void swap_pointer( int *pp[] )
{
for(int i=0;i<n;i++){
*pp[i]+=1;
}
の部分を書き直したいです。 for(int i=0;i<n;i++)を書き直したいのですがどのようにすればいいのでしょうか?
#include <stdio.h>
void swap_pointer( int *pp[] );
int main(void) {
int a=1;
int b=2;
int *p[] = {&a, &b};
int n = sizeof(p)/sizeof(p[0]);
int i;
for( i=0; i<n; i++ ) printf( "before: p[%d] %p\n", i, p[i] ); for( i=0; i<n; i++ ) printf( "before: *p[%d] %d\n", i, *p[i] ); swap_pointer(p); for( i=0; i<n; i++ ) printf( "after: p[%d] %p\n", i, p[i] ); for( i=0; i<n; i++ ) printf( "after: *p[%d] %d\n", i, *p[i] ); return 0;
}
void swap_pointer( int pp[] )
{
for(int i=0;i<n;i++){
pp[i]+=1;
}
}
前:p [0] 0x7fff65880f60
前:p [1] 0x7fff65880f64
前: p [0] 1
前: p [1] 2
後:p [0] 0x7fff65880f60
後:p [1] 0x7fff65880f64
後:* p [0] 2
後:* p [1] 3
でアドレスが変わらないです。どうすればいいのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。