歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C++ 指針、數組和引用辨析

C++ 指針、數組和引用辨析

日期:2017/3/1 10:04:46   编辑:Linux編程

一、C++指針:內容是指示一個內存地址的變量;類型是指示編譯器怎麼解釋指針內容指向地址中的內容,以及該內存區域有多大;

例子:

int i = 0;
int * pi = &i;
printf(“pi = %x \n”, pi); // 打印pi的內容: 0x2000
printf(“*pi= %d \n” , *pi); // 打印pi指向地址中的值: 5
printf(“&pi= %x \n”, &pi); // 打印pi的地址: 0x100


從匯編的角度來看,指針是這樣的
int i = 0;
010E139E mov dword ptr [i],0
int * pi = &i;
010E13A5 lea eax,[i]
010E13A8 mov dword ptr [pi],eax

二、數組:是一個單一數據類型對象的集合。其中單個對象沒有被命名,通過索引訪問。

數組名和指針的區別:數組名的內涵在於其指代實體是一種數據結構,這種數據結構就是數組。數組名的外延在於其可以轉換為指向其指代實體的指針,而且是一個指針常量。指向數組的指針則是另外一種變量類型,僅僅意味著數組的存放地址

注意:雖然數組名可以轉換為指向其指代實體的指針,但是它只能被看作一個指針常量,不能被修改,如下:

int intArray[10];
intArray++; // 錯誤

“指針和數組等價”說的是什麼?索引操作相同,例如: p[2]; a[2];

Copyright © Linux教程網 All Rights Reserved