c語言指針是什么 c語言指針介紹
c語言指針詳解
指針是一個特殊的變量,它里面存儲的數值被解釋成為內存里的一個地址。數據在內存中的地址也稱為指針,如果一個變量存儲了一份數據的指針,我們就稱它為指針變量。
計算機中所有的數據都必須放在內存中,不同類型的數據占用的字節數不一樣,例如 int 占用 4 個字節,char 占用 1 個字節。
為了正確地訪問這些數據,必須為每個字節都編上號碼,就像門牌號、身份證號一樣,每個字節的編號是唯一的,根據編號可以準確地找到某個字節。
C語言用變量來存儲數據,用函數來定義一段可以重復使用的代碼,它們最終都要放到內存中才能供 CPU 使用。數據和代碼都以二進制的形式存儲在內存中,計算機無法從格式上區分某塊內存到底存儲的是數據還是代碼。
當程序被加載到內存后,操作系統會給不同的內存塊指定不同的權限,擁有讀取和執行權限的內存塊就是代碼,而擁有讀取和寫入權限(也可能只有讀取權限)的內存塊就是數據。
CPU 只能通過地址來取得內存中的代碼和數據,程序在執行過程中會告知 CPU 要執行的代碼以及要讀寫的數據的地址。
如果程序不小心出錯,或者開發者有意為之,在 CPU 要寫入數據時給它一個代碼區域的地址,就會發生內存訪問錯誤。這種內存訪問錯誤會被硬件和操作系統攔截,強制程序崩潰,程序員沒有挽救的機會。
變量名和函數名為我們提供了方便,讓我們在編寫代碼的過程中可以使用易于閱讀和理解的英文字符串,不用直接面對二進制地址,那場景簡直讓人崩潰。
需要注意的是,雖然變量名、函數名、字符串名和數組名在本質上是一樣的,它們都是地址的助記符,但在編寫代碼的過程中,我們認為變量名表示的是數據本身,而函數名、字符串名和數組名表示的是代碼塊或數據塊的首地址。
擴展資料
指針使用(* 和 &)
*&a可以理解為*(&a),&a表示取變量 a 的地址(等價于 pa),*(&a)表示取這個地址上的數據(等價于 *pa),繞來繞去,又回到了原點,*&a仍然等價于 a。
&*pa可以理解為&(*pa),*pa表示取得 pa 指向的數據(等價于 a),&(*pa)表示數據的地址(等價于 &a),所以&*pa等價于 pa。
對星號*的總結
在我們目前所學到的語法中,星號*主要有三種用途:
1、表示乘法,例如int a = 3, b = 5, c; c = a * b;,這是最容易理解的。
2、表示定義一個指針變量,以和普通變量區分開,例如int a = 100; int *p = &a;。
3、表示獲取指針指向的數據,是一種間接操作,例如int a, b, *p = &a; *p = 100; b = *p;。
C語言中指針是什么
我們都知道:C語言中的數組是指 一類 類型,數組具體區分為 int 類型數組,double類型數組,char數組 等等。同樣指針 這個概念也泛指 一類
數據類型,int指針類型,double指針類型,char指針類型等等。
通常,我們用int類型保存一些整型的數據,如 int num = 97 , 我們也會用char來存儲字符: char ch = 'a'。
我們也必須知道:任何程序數據載入內存后,在內存都有他們的地址,這就是指針。而為了保存一個數據在內存中的地址,我們就需要指針變量。
因此:指針是程序數據在內存中的地址,而指針變量是用來保存這些地址的變量。
C語言中的指針是什么意思?
C語言指針的作用有哪些?
指針的用途非常廣泛,比如如果你想通過函數改變一個變量的值,就得用指針而不能用值傳遞。還有在很多時候變量,特別是對象的數據量實在太大,程序員就會用指針來做形參,只需要傳遞一個地址就行,大大提高了效率。簡單地說指針就是指向變量和對象的地址。
C語言指針怎么用?
本文發布于:2023-02-28 18:57:00,感謝您對本站的認可!
本文鏈接:http://www.newhan.cn/zhishi/a/167759161848404.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:c語言指針(c語言指針p和*p區別).doc
本文 PDF 下載地址:c語言指針(c語言指針p和*p區別).pdf
| 留言與評論(共有 0 條評論) |