06ポインタ・エントリ

図1は、簡単に言えば、ポインタはアドレスがアドレスであることを示し

1の#include <stdio.hの>
 2  
3。 ボイド(メイン){
 4。     INT NUM = 1 ;
 5      のprintf(" NUM値=%dはNUMアドレスP%= \ N- "、NUM、&NUM);
 6      // 図1に示すように、可変アドレスの出力は、フォーマット%のP用いた場合
 7。     // 2、&NUMするアドレスに対応する撮影したNUM変数を表している
8。 
9。 
10      INT * PTR =&NUM; // 、ポインタのポインタを定義する
。11      のprintf(" PTRアドレスは、アドレス%のP PTRストレージのアドレスに%PがPTRの値が格納されている値(PTRポイント値)%D \ N-によって指し示さ、およびPTR、PTR、* )PTR;
 12は     // 1、。 intが*型がポインタ型であることを示している
 13     // 2、名前PTR、PTR INT *は型で
 14      // 。int型の変数に3、PTRポイント(アドレス)
 15      // 4、ポインタ変数、アドレス自体PTR&
 16      // 5、変数へのポインタを取得します格納アドレスPTR
 17。     // 6は、ポインタの値を得る:* PTR 
18である 
19。 }

 

 メモリのレイアウト図:

 

 2、演習1

  プログラムの書き込み、変数NUMのINTアドレスを取得し、ポインタPTRをNUMに端末アドレスに表示され、PTRによってNUMの値を変更するために、図1に示すメモリレイアウト。

1の#include <stdio.hの>
 2  空隙(メイン){
 3      int型 NUM = 100 ;
 図4      のprintf(" NUMの値は%NUM P%\ N-のアドレスである"、NUM、&NUM);
 5  
。6      INT * =&PTRのNUM;
 7      * PTR = 200であり図8      のprintf(" NUMの値は%D NUM P%\ N-のアドレスである"、NUM、&NUM);
 9 }

 

   メモリのレイアウト図

    

3、演習2

  正しくプログラムかどうかを確認

  

 

 4、練習3

  どのような出力

 1 #include<stdio.h>
 2 
 3 void main() {
 4     int a = 300;
 5     int b = 400;
 6     int* ptr = &a; //ptr 指向a
 7     *ptr = 100; //a=100
 8     ptr = &b;  //ptr指向b
 9     *ptr = 200; //b=200
10     printf("a=%d,b=%d,*ptr=%d", a, b, *ptr);
11 }

 

 5,指针细节

  ①基本类型,都有对应的指针类型,形式为 数据类型*  ,比如 int的对应的指针就是 int* , float 对应的指针类型就是 float* ,以此类推

  ②此外还有指向数组的指针,指向结构体的指针,指向共用体的指针,二级指针,多级指针等。

  

  

  

 

おすすめ

転載: www.cnblogs.com/shanlu0000/p/12337603.html