1.什麼是指標
在電腦科學中,指標(pointer)是程式語言中的乙個物件,利用位址,它的值直接指向(points to)存在電腦儲存器中另乙個地方的值。由於通過位址能找到所需的變數單元,可以說,位址指向該變數單元。因此,將位址形象化的稱為「指標」。意思是通過它能找到以它為位址的記憶體單元。
指標就是變數,用來存放位址的變數。(存放在指標中的值都被當成位址處理)。
2.指標的大小
指標的大小在32位平台是4個位元組,在64位平台是8個位元組。
因為在32位的機器上,位址是32個0或者1組成二進位制序列,那位址就得用4個位元組的空間來儲存,所以乙個指標變數的大小就應該是4個位元組。那如果在64位機器上,如果有64個位址線,那乙個指標變數的大小是8個位元組,才能存放乙個位址。這就涉及到記憶體還有編址了。
下面是乙個常見的面試問題:
/*寫乙個程式判斷大小端*/
#includeint is_little()
return 0;
}int main()
else
return 0;
}
3.指標的型別
不同型別的指標,解引用所訪問的記憶體位元組大小不一樣。
char* 型別的指標是為了存放 char 型別變數的位址;short* 型別的指標是為了存放 short 型別變數的位址; int* 型別的指標是為了存放 int 型別變數的位址; void*不能解引用,但是可以接受任何型別的位址。
指標的型別決定了指標向前或者向後走一步有多大(距離)。
指標的型別決定了對指標解引用的時候有多大的許可權(能操作幾個位元組)。
5.指標和陣列
陣列名表示的是陣列首元素的位址
p+i 其實計算的是陣列 arr 下標為i的位址。
自帶解引用。p[i]=*(p+i)
陣列指標:(*p)[6] 指向陣列的指標
指標陣列: int * arr[6] 存放指標的陣列
6.二級指標
int a=10;
int *pa=&a;
int **ppa =&pa;
**ppa 先通過 *ppa 找到 pa ,然後對 pa 進行解引用操作: *pa ,那找到的是 a
* *ppa =50;
//等價於*pa = 50;
//等價於a = 50;
基礎知識點
1 inline block布局 2 table布局 3 justify的末行不對齊 4 兩個圖示之間有空格 換行 5 背景中的的 路徑的 全部斜槓都為 不是 命令列下的這種 doctype html html head meta charset utf 8 title xx title head ...
erlang基礎知識點
1 變數是不可改變的,必須以首字母大寫開頭 2 字串就是小寫字母,或者單引號引起來的字串 3 賦值可以使用匹配模式 4 資料結構有元組,取值用匹配模式來取值 就能取到x,b的值 5 資料結列表 ss,aa,取值是用 head foot 的形式取值 頭和尾的形式匹配 6 字串只能用雙引號表示 7 函式...
ios基礎知識點
1.記憶體管理 用記憶體引用計數來進行管理 alloc,retain,copy會使記憶體引用計數立即 1 當物件使用結束後要對它進行釋放 release 立即 1 autorelease 未來 1 autorelease的物件會把這個物件放置到離它最近的自動釋放池裡,自動釋放池釋放的時候才會把自動釋...