高水準言語プログラミング-実験10のポインタと構造(2)

2.ホールの下の演習
1.文字列とポインタ
次のプログラムの結果を書き込んでください

#include<stdio.h>
int main( )
{   char   string[30]="How_are_you" ;
	char   *p=&string[0],   *p2=string+8;
    printf("%s,%s\n" , p , p2 ) ;
}
 

プログラムの実行結果は次のとおりです。

#include <stdio.h>

int main()
{
    printf("_______________________");
}

アイデア:* pはポインター宣言シンボルであり、テーブル名pはポインター変数です。変数のアドレスまたはポインターの最初のアドレスをp変数に割り当てる場合、それはpのポインター変数がこの値を指すことを意味します。文字列は最後まで読み込まれます。

回答:How_are_you、あなた

2.配列のポインターの
問題:次の配列定義が提供されています:int a [3] [4] = {{1,3,5,7}、{9,11,13,15}、{17,19,21 、23}};次の項目の値を計算します(配列aの最初のアドレスを2000に設定し、int型の数値は4バイトを占有します)。
プログラムを記述し、要求ごとに1行を出力します。

1)a[2][1]2)a[1]3)a			(4)a+15)*a+16)*(a+1)7)a[2]+18)*(a+1)+19)*((a+2)+2

回答:

#include<stdio.h>
int main(){
    printf("19\n");
    printf("2016\n");
    printf("2000\n");
    printf("2016\n");
    printf("2004\n");
    printf("2016\n");
    printf("2036\n");
    printf("2020\n");
    printf("21\n");
    return 0;
}

分析:

数组:              数组下标:          
1  3   5  7         00   01   02   03
9  11  13 15        10   11   12   13
17 19  21 23        20   21   22   231)a[2][1]的值
(2)a[1],代表第二行的首地址,2000+4*4=20163)a,代表a[0][0]的地址,20004)a+1,代表a[1][0]的地址,20165)*a+1,代表a[0][1]的地址,2000+4=20046)*(a+1)	,代表a[1][0]的地址,20167)a[2]+1	,代表a[2][0]的地址的下一位,即a[2][1]的地址,2000+4*9=20368)*(a+1)+1*(a+1)为第二行的首地址即a[1][0],然后再把这个地址+1,即a[1][1]的地址,2016+4=20209)*((a+2)+2,(a+2)为a[2][0]的地址,*(a+2)+2为a[2][2]的地址,最外面加*,为a[2][2]的值21.
元の記事を10件公開 いいね1 訪問数190

おすすめ

転載: blog.csdn.net/weixin_39475542/article/details/105076845