朱有鵬c語言 指針才是c語言的精髓 1

指針的實質就是變量,和普通變量沒有區別。
但指針的用途和普通變量有所不同,指針變量應該用于存儲另一個變量的地址,而不是隨意用來儲,一些int類型的數。
指針的出現是為了間接訪問,而c語言的指針起源與匯編語言中的間接訪問(實質是cpu中尋址方式的一種)(cpu有兩種尋址方式直接尋址,間接尋址,特別的是寄存器間接尋址)特別是在arm這種cpu中廣泛采用寄存器尋址這種方式。
間接尋址是cpu本身的特性,這個就決定了匯編語言必須實現間接尋址,就決定了在匯編以上的c語言也必須實現間接尋址。
指針的出現不是偶然,是c語言巧妙的把cpu的寄存器間接尋址和匯編語言間接尋址封裝成了指針這種形式。

高級語言如java、c#沒有指針是如何實現間接訪問呢?

語言本身幫我們封裝了間接尋址的功能,間接使用了指針。

指針標準使用方式

1 定義指針變量

2 給指針變量賦值(綁定指針)

3 解引用

指針變量綁定就是給指針變量賦值,也就是讓指針變量指向另一個變量。當我們沒有綁定之前不能解引用,綁定后才可以。

int a=23;
int *p;//第一步定義指針變量p
p=&a;//第二步綁定指針,讓p指向變量a
p=(int *)4;//另一種綁定指針的方式,讓指針指向地址為4的那個變量。
*p=555;//把555放到指針p指向的那個地址空間里面去。

注意

  • 當我們用int *p定義一個指針變量p時,因為p在mian函數里面,是一個局部變量,所以也遵循c語言里面局部變量的一般規律(定義局部變量未初始化,此局部變量中的數字是隨機的)。
  • 此時如果解引用p相當于我們訪問了這個隨機數字為地址的內存空間,但此空間能否訪問并不可知,所以解應用前一定要綁定賦值。
  • 指針綁定的意義就是讓指針能訪問可以訪問的地方。指針的解引用是為了能夠間接訪問變量。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 一、溫故而知新 1. 內存不夠怎么辦 內存簡單分配策略的問題地址空間不隔離內存使用效率低程序運行的地址不確定 關于...
    SeanCST閱讀 7,884評論 0 27
  • Swift1> Swift和OC的區別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,145評論 1 32
  • Swig java Jni開發指南目錄Swig java Jni開發指南 Swig參考文檔 全局變量 常量 只讀變...
    oracle3閱讀 4,094評論 0 1
  • 子類能夠繼承父類中被聲明為public和protected的成員變量和成員方法,但不能繼承被聲明為private的...
    程序設計法師閱讀 546評論 0 0
  • 字符串反轉 split 字符串轉成數組 reverse數組反轉 join數組轉成字符串 定時器的基本用法 單次定時...
    w_50df閱讀 247評論 0 0