プログラミング I 第 13 回演習 今日は持ち帰り、次回の講義に持ってくること 以下のようにメモリにアドレスが振られているとします。 各変数型のサイズは char:1 バイト、int:4 バイト、double:8 バイトとします。 0x7fff0010 0x7fff002f 以下のプログラムをコンパイルして実行しました。 問1 #include <stdio.h> このプログラムが何をしているかを簡潔に書け void replace( char str[], int n){ char *cp=str; 問2 *(cp+n) -= 32; この演算により値が変わったメモリの領域を塗りつぶせ } int main( void ){ 問3 char str[15]=“programming”; ここで配列 str が確保したメモリの領域を塗りつぶせ printf(“str=%p\n”,str ); replace(str, 4); return 0; } 実行結果は以下のように得られたとします。 str=0x7fff0016 以下のプログラムをコンパイルして実行しました。 問4 #include <stdio.h> ここで na+nb の結果が書き込まれる void calc( int na, int nb, int *sum, int *dif ){ メモリの領域を塗りつぶせ printf( &na=%p,&nb=%p\n , &na, &nb ); *sum = na + nb; 問5 *dif = ( na > nb ) ? na - nb : nb - na; ここで na の値が記録されているメモリの領域を塗りつぶせ } 問6 int main( void ) ここで変数 wa の値が記録されて { いるメモリの領域を塗りつぶせ int na=1, nb=2, wa = 0, sa = 0; printf( &na=%p,&nb=%p,&wa=%p,&sa=%p\n , &na, &nb, &wa, &sa ); calc( na, nb, &wa, &sa ); printf( 和は %d です。差は %d です。\n , wa, sa ); return 0; } 実行結果は以下のように得られたとします。 &na=0x7fff0010,&nb=0x7fff0014,&wa=0x7fff0018,&sa=0x7fff001c &na=0x7fff0022,&nb=0x7fff0026 和は 3 です。差は 1 です。 解答欄 問1 0x7fff0010 問2 問3 問4 問5 問6 0x7fff002f
© Copyright 2024 ExpyDoc