C++课程上 有关“指针” 的小结
上完了C++的第二節(jié)課以后,覺得應(yīng)該對(duì)這個(gè)內(nèi)容進(jìn)行一個(gè)小結(jié),鞏固知識(shí)點(diǎn),并對(duì)我的心情進(jìn)行了一個(gè)側(cè)面烘托...
開始上課的老師:
正在上課的我:
上去敲代碼的我:
過程是這樣的:
下來的我:
非常的尷尬,簡(jiǎn)直是黑歷史= =
變量:
變量有整形變量,浮點(diǎn)型變量,字符型變量,當(dāng)然還有指針變量。對(duì)于32位操作系統(tǒng)而言,為字符型變量分配的內(nèi)存單元是一個(gè)字節(jié),整型是兩個(gè)字節(jié),單精度浮點(diǎn)型變量為四個(gè),雙精度浮點(diǎn)型變量為八個(gè)字節(jié),今天要闡述的指針變量是四個(gè)字節(jié)。
指針變量所存儲(chǔ)的是地址。
int a; int *pa; pa = &a; //將整形變量a的地址賦值給整型指針pa經(jīng)過上面代碼的處理以后,指針pa指向變量a。
指針變量的定義:
int *ptr1; float *ptr2; char *ptr3; void *ptr;指針變量的賦值:
int *ptr,a = 4; ptr = &a; //將變量a的地址賦值給指針變量ptr經(jīng)過上面語句的處理以后,整形指針指向整形變量a。原來以為整形指針和整形變量放在一起定義編譯會(huì)出錯(cuò),學(xué)習(xí)了:int *ptr,a=4;
指針變量的引用:
(1)
int main() {int *p,m;scanf("%d",&m);p = &m; //指針p指向mprintf("%d\n",*p);return 0; }這段程序比較簡(jiǎn)單,沒有什么問題。
(2)
int main() {int *p,m;p = &m;scanf("%d",p);printf("%d\n",m);return 0; }我:“???”
回來以后自己試了下,弄懂了這個(gè)內(nèi)容,就是把之前輸入的scanf中的&m替換為p。這里摘取一段C++中文網(wǎng)介紹scanf的說明。
(3)
int main() {int *p,m;scanf("%d",p);p = &m;printf("%d\n",m);return 0; }“這不行吧???”
確實(shí)是不行的,程序崩潰。原因是因?yàn)槠洳话踩浴?/p>
指針:
指針是一種特殊的變量,它存儲(chǔ)的數(shù)值是內(nèi)存中的一個(gè)地址。 1.指針的類型 2.指針?biāo)赶虻念愋?3.指針的值 或者 指針?biāo)赶虻膬?nèi)存區(qū) 4.指針本身所占據(jù)的內(nèi)存區(qū)void 指針
int main() {int m = 5;void *ptr;ptr = &m;printf("%d\n",*ptr);return 0; }編譯錯(cuò)誤。
“void型指針,表示這個(gè)指針指向的內(nèi)存中的數(shù)據(jù)的類型要由用戶來指定。 比如內(nèi)存分配函數(shù)malloc函數(shù)返回的指針就是void *型,用戶在使用這個(gè)指針的時(shí)候,要進(jìn)行強(qiáng)制類型轉(zhuǎn)換,也就是顯式說明該指針指向的內(nèi)存中是存放的什么類型的數(shù)據(jù) (int *)malloc(1024)表示強(qiáng)制規(guī)定malloc返回的void*指針指向的內(nèi)存中存放的是一個(gè)個(gè)的int型數(shù)據(jù)。”指針的值:指針?biāo)赶虻膬?nèi)存區(qū)。
指針本身所占據(jù)的內(nèi)存區(qū):
可以使用sizeof(指針類型),對(duì)于32位操作系統(tǒng)來說,系統(tǒng)為指針變量分配4個(gè)字節(jié)的長度。
char *np;1. sizeof(char) // 1 2. sizeof(*np) //4 3. sizeof(char *) //4 4. sizeof(char *p) //compiling error總結(jié)
以上是生活随笔為你收集整理的C++课程上 有关“指针” 的小结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JBPM工作流入门总结
- 下一篇: python--批量下载豆瓣图片