C語言指針知識點總結(jié)_第1頁
C語言指針知識點總結(jié)_第2頁
C語言指針知識點總結(jié)_第3頁
C語言指針知識點總結(jié)_第4頁
C語言指針知識點總結(jié)_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、# include <stdio.h>Void g(int*p,int*q)*p=1;*q=2;Int main(void)Int a=3,b=5;Int f(int i,int j) 指針的重要性 表示一些復(fù)雜的數(shù)據(jù)結(jié)構(gòu) return 100; 快速傳遞數(shù)據(jù)/ return 88;error 使函數(shù)返回一個以上的值能直接訪問硬件Int main (void) 能方便處理字符串是理解面向?qū)ο笳Z言中引用的基礎(chǔ)Int a=3,b=5; 總結(jié):指針是 C 語言的靈魂指針的定義地址內(nèi)存單元的編號從零開始的非負(fù)整數(shù)范圍: 4G指針1. 指針就是地址,地址就是指針2. 指針變量是存放地址的變量

2、3. 指針和指針變量是兩個不同的概念4. 敘述時通常把指針變量簡稱為指針,實際它們含義不一樣5. 指針的本質(zhì)就是一個操作受限的非負(fù)整數(shù)指針的分類基本類型指針(重要)#include<stdio.h> int main(void)int *p; /p 是變量的名字, int* 表示 p 變量存放的是 int 類型變量的地址Int*p; 不表示定義了一個名字叫做 *p 的變量Int*p; 應(yīng)該理解為: p 是變量名, p 變量的數(shù)據(jù)類型是 int* 類型所謂 int* 類型,實際就是存放 int 變量地址的類型int i=3;char ch= 'A'p=&i;

3、/OK1.p 保存了 i 的地址,因此 p 指向 i2. p不是i, i也不是p,修改p的值不影響i的值,修改i的值也不影響p的值3. 如果一個指針變量指向了某個普通變量,則*指針變量 完全等同于 普通變量例:若p指向i,則*p=i (*p和i可互相替換)p=&ch;/error/p=i; /error, 因為類型不一致, p 只能存放 int 類型變量的地址,不能存放 int 類型變量/P=55;/error, 原因同上return 0 ;附注:?*的含義:1. 乘法2. 定義指針變量Int*p; /定義了一個名字叫做p的變量,int*表示p只能存放int變量的地址3. 指針運算符該

4、運算符放在已經(jīng)定義好的指針變量的前面 如果 p 是一個已經(jīng)定義好的指針變量則*p表示以p的內(nèi)容為地址的變量?如何通過被調(diào)函數(shù)修改主調(diào)函數(shù)普通變量的值1. 實參必須為該普通變量的地址 &.2. 形參必須為指針變量 *.例子:經(jīng)典指針程序:互換數(shù)值3. 在被調(diào)函數(shù)中通過 *形參名 = 的方式就可以修改主調(diào)函數(shù)相關(guān)變量的值#include<stdio.h> #include<stdio.h>形參和實參是不同的變量,修改形參不會改變實參#include<stdio.h>void huhuan ( int a, int b ) void huhuan2 ( i

5、nt *p, int *q ) ?指針常見錯誤void huhuan3 ( int *p, int*q )#include<stdio.h>/形參的名字是p和q,接收實參數(shù) 據(jù)的是p和q,而不是*p和*qint t;t=a;a=b;b=t;return;int main(void)int a=3;int b=5;huhuan(a,b);Int main(void)int *t;/如果要互換p和q的值,則 t 必須是int* ,不能是t=p;Int i=5;p=q;Int*p;q=t;Int*q;return;P=&i;/*q=p;/error語法編譯會出錯int main(

6、void)/*q=*p;/errorP=q;/q 是垃圾值, q 賦給 p, p 也是垃圾值 int a=3;printf( “%dn”,*q); /13 行int b=5;intint t;如果要互換*p和*q的值,則t必須是int,不能是int*t=*p;/p 是 int* , *p 是 int*p=*q;*q=t;return;int main(void)/*q的空間是屬于本程序的,所以本程序可以讀寫int a=q.的內(nèi)容,但是如果q內(nèi)部是垃圾值,則本程序不能讀寫int的內(nèi)容因為此時 *q 所代表的內(nèi)存單元的控制限權(quán)并沒有分配給本程序所以本程序運行到 13行時就會立即出錯 */retur

7、n 0;#in dudevstdio.h-1 -2 -3 4 5 -6# inuc函數(shù)可以輸出任何一個一維數(shù)voidFf的 n內(nèi)*容pArr,i nt le n)# include<stdio.h> pA0id=8?指針變量恤 行Void OutArr(int*pArr,int len) int maiint(vi ;oid)Int i;for(i=0,i<len#,i+nc+liu) de<stdio.h>#includf(eb<,6s)t;diIon.thm> ain(void)For(i=0;i<len;+i)int a6=P1?一個編量到

8、底占幾個字瓜main(void Printf( “%dn ”,pArri);pr/i/n*t(fp(f(a,6);Int main(void)printf( %dn詢3陽功&能:返回值就是該數(shù)據(jù)類型所制字節(jié)數(shù)19行若寫為&a3則輸出結(jié)果為0f £楙)地址罰嚴(yán)6街做郵1 n” Wf( double)=8 OutArr(a,5);Void f(int*pArr,int len)int a5=1,2,3,4,5;1 99 22 33 0 0 0 0 0 0 0 0 pArr2=10;0 0 0 0 0 0 0 0 0 0 0 0 0 0int b6=-1,-2,-3,4,5

9、,-6;0 0 0 0 0 0 0 0 0 0 0 0 0 0 指針變量不能相加,不能相乘tcg相除;99辰33Arr+2)=*瞬=代0 0 0 0 0 0 可以相減(僅當(dāng)兩個指針變量指向的 是同一塊連續(xù)空間中的0 0不0同0存0儲0空0 0間0) 0 0 0 0 0 f(a,5);/a 是 int* 0 0 0 0 0 0 0 0 0 0 0 0 0 0*(b+i) int i=5;int a6=1,2,3,4,5,6Int jof (數(shù)據(jù)類型)mt j=gprintf( “%dn”,a2);指針和數(shù)組指針和一維數(shù)組?一維數(shù)組名一維數(shù)組名是個指針常量它存放的是一維數(shù)組第一個元素的地址?下標(biāo)和

10、指針的關(guān)系如果 p 是個指針變量,則 pi 永遠(yuǎn)等價于 *(p+i)?確定一個一維數(shù)組需要幾個參數(shù)(如果一個函數(shù)要處理一個一維數(shù)組,則需要接收該數(shù)組的哪些信息)需要兩個參數(shù):數(shù)組第一個元素的地址數(shù)組的長度int main(void)# include<stdio.h>Return 0;Int a5; /a=&a2;/error 因為 a 是常量p=&a1;sizeof (變量名)功能:返回值是該變量所占的字節(jié)數(shù) 假設(shè) p 指向 char 類型變量( 1 個字節(jié)) 假設(shè) q 指向 int 類型變量( 4 個字節(jié)) 假設(shè) r 指向 double 類型變量( 8 個字節(jié))#include<stdio.h>指針和二維數(shù)纟ma in (void)4 4 4Press any key to continue指針和函數(shù)指針和結(jié)構(gòu)體多級指針專題: char ch='A'Int i=99;Double x=66.6Char * p=&ch;動態(tài)內(nèi)存分配(重難點)Int *q=&i;傳統(tǒng)數(shù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論