程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 簡單學C——第六天,第六天

簡單學C——第六天,第六天

編輯:關於C語言

簡單學C——第六天,第六天


 

指針

  

   指針是c語言中很靈活的一個內容,當然,靈活的都是較難掌握的。不過,只要理解其實質,學習,運用指針還是一件很輕松的事情的。

   首先理解,1.什麼是指針?

   在c語言中,指針也同Int ,double 一樣是一種數據類型,int 存放的是一個整型數字,double 存放的是一個雙精度的數字,指針存放的是地址。記得老師講過這樣一個形象的例子:指針類似於一間倉庫的門牌號。這個門牌號能體現這個房間的具體位置。

   2.指針有什麼用?

   因為指針存放的是地址,所以指針能直接訪問,傳遞那個地址上的數據和那個地址,這無疑對於我們下次即將說的  函數 有很大的方便。初步了解指針還是需要自己寫幾個小程序觀察一下,然後就知道了。

   在寫程序之前,需要知道怎麼用指針。

   因為指針也是一個數據類型,所以它的用法和 int的用法差不多都是一樣的。首先,1.定義指針  ,其格式為  數據類型(如 int ,double ,struct) + *標識符; 數據類型的意義是,你現在定義的這個指針所存放的地址是指向什麼數據類型的,例如 int *p; 它的意思就是定義一個指向整型數字的指針變量。

   那麼,下面就寫寫小程序探索探索吧。

   code:

 

#include<stdio.h>
int main()
{
   int a; //定義整型
   scanf("%d",&a);
   while(a--)
   {
       int *p;//定義整型的指針變量
       p=&a; //將a的地址賦給指針變量p
       //現在p存放的就是變量a所代表的數在計算機中所存放的地址了
       printf("%d--",*p);//輸出p指向的地址存放的內容
       printf("%d\n",p);//輸出p的地址
   }
}

運行結果:

從上面的代碼中可以很明確的看出,指正存放的是變量的地址。那麼思考一下,指針的地址又該是多少呢? 把上面程序的最後一個語句的前面加上一句 printf("%d--",&p);  運行之後可以看出是這樣的結果。

   可見指針也是需要內存單元去存放的。

  上面存在的還比較陌生的符號再說一下,* 有兩種用的地方1.在定義的時候用到,代表定義了一個指針變量,(如 int *p),2.在表達式中出現,代表取內容符號,取得p存放的地址裡面存放的內容,(如 *p) 。還有 & ,它被用作取地址符,取得內容所存放的地址,(如 &p)。

  給兩個數,交換這兩個數,輸出這兩個數,相信每一位讀者都會獨立的寫出此程序,但是為了麻煩起見,能否通過對地址的操作來交換這兩個數呢?當然能。

code

#include<stdio.h>
int main()
{
  int a,b;
  int *p,*q,*w; //定義指針變量
  scanf("%d%d",&a,&b);
  p=&a; //p存放變量a的地址
  q=&b;//q存放變量b的地址
  printf("1:%d %d\n",*p,*q);
  //地址的交換,與兩個數的交換方式一樣
  w=p;
  p=q;
  q=w;
  //此時p存放變量b的地址,a存放變量b的地址
  printf("2:%d %d\n",a,b);
  printf("3:%d %d\n",*p,*q);
  printf("4:%d %d\n",&a,&b);
  printf("5:%d %d\n",p,q);

}

運行結果:

 

還需要提示的是,c語言中的很多東西都是可以鑲嵌重疊的,這我曾多次提到,而且指針也不例外  ,比如,你定義了這樣一個變量 int **q;這個變量有什麼用呢?它與int *p;有什麼關系? 前面那個q代表著定義了一個二級指針,它的作用是指向一級指針的地址,如   q=&p; 把一級指針p的地址賦給二級指針 q。同時三級,四級都是一樣的道理,只要記住指針保存的是地址,地址的內容與它所對應的數據類型有關。

 

指針被稱為c語言中最難應用的部分,不過只要掌握原理,仔細想想,一些基礎的問題還是能很容易想明白的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved