c語言程序設(shè)計(jì)_指針c語言學(xué)

c語言程序設(shè)計(jì)_指針c語言學(xué)

ID:16489726

大小:80.00 KB

頁數(shù):18頁

時(shí)間:2018-08-10

c語言程序設(shè)計(jì)_指針c語言學(xué)_第1頁
c語言程序設(shè)計(jì)_指針c語言學(xué)_第2頁
c語言程序設(shè)計(jì)_指針c語言學(xué)_第3頁
c語言程序設(shè)計(jì)_指針c語言學(xué)_第4頁
c語言程序設(shè)計(jì)_指針c語言學(xué)_第5頁
資源描述:

《c語言程序設(shè)計(jì)_指針c語言學(xué)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫

1、C語言程序設(shè)計(jì)指針C語言學(xué)習(xí)重點(diǎn):1、C語言中指針的概念2、指針變量的相關(guān)操作3、指針與數(shù)組的關(guān)系4、內(nèi)存空間的動(dòng)態(tài)分配第1節(jié) C語言中指針一、指針與指針變量一臺計(jì)算機(jī)的內(nèi)存單元非常多,為了相互區(qū)分,就給它們采取編號的方法,按十進(jìn)來說,從0開始編號,即0,1,2……,這種對每個(gè)內(nèi)存單元的唯一的編號叫做內(nèi)存單元的地址。計(jì)算機(jī)對內(nèi)存的訪問一般采取“按地址訪問”的方式。變量(指前面所講的普通變量)的實(shí)質(zhì)對應(yīng)的是內(nèi)存單元,對變量的操作實(shí)質(zhì)是對相應(yīng)內(nèi)存單元中所存放的數(shù)據(jù)的操作:給變量賦一個(gè)值,實(shí)質(zhì)是將一個(gè)值存入與此變量對應(yīng)的內(nèi)存單元;

2、讀取一個(gè)變量的值,實(shí)質(zhì)是從對應(yīng)的內(nèi)存單元中取出存放的數(shù)據(jù)。有時(shí),我們要用到內(nèi)存單元的地址,這種情況下,可利用C語言中的“指針”數(shù)據(jù)類型來實(shí)現(xiàn)。指針就是變量的地址,實(shí)質(zhì)是內(nèi)存單元的地址。可以用變量來存放指針,稱為指針變量,但跟普通變量不同的是,普通變量存放數(shù)據(jù),指針變量存放的是變量的地址,即內(nèi)存單元的地址。1、指針變量的定義數(shù)據(jù)類型符 *變量名;如:int*a,*b;float*fp;2、指針變量的賦值1)初始化賦值數(shù)據(jù)類型*指針名=初始地址值;例:intx=20;//定義了一個(gè)普通的整型變量int*p=&x;//定義了一個(gè)指

3、向整型變量的指針變量,并讓p指向變量x所對應(yīng)的內(nèi)存單元,即p中存入x所對應(yīng)的內(nèi)存單元的地址。如下圖:例:inti;int*p=&i;int*q=p;2)賦值語句賦值inta;int*p;p=&a;3、與指針相關(guān)的運(yùn)算符&:取地址運(yùn)算符,獲得變量的地址*:訪問指針?biāo)缸兞績?nèi)容的運(yùn)算符上例中,要獲得內(nèi)存單元10000中的內(nèi)容有兩種辦法:①直接訪問:按變量名來存取變量值。上例中可通過x來實(shí)現(xiàn);②間接訪問:通過存放變量地址的指針變量去訪問。上例中可通過*p訪問。注意:p代表地址而*p代表內(nèi)容。例:輸入兩個(gè)數(shù),并使其從大到小順序輸出,

4、用指針實(shí)現(xiàn)。#includevoidmain(){inta,b,*p1,*p2,*p;printf("請輸入兩個(gè)整數(shù):");scanf("%d%d",&a,&b);p1=&a;p2=&b;if(*p1<*p2){p=p1;p1=p2;p2=p;}printf("a=%d,b=%d",a,b);printf("max=%d,min=%d",*p1,*p2);}說明:1、指針變量必須先定義,后賦值,最后才能使用!沒有賦值的指針變量是沒有任何意義的,也絕對是不允許使用的。如下例:#include"st

5、dio.h"voidmain(){int*p1,*p2;printf("請輸入兩個(gè)整數(shù):");scanf("%d%d",p1,p2);printf("max=%d,min=%d",*p1,*p2);}例中的指針變量p1和p2沒有賦值,使用時(shí)就會(huì)出錯(cuò)。2、指針變量只能指向定義時(shí)所規(guī)定類型的變量。如果給指針賦值時(shí),=號右邊的指針類型與左邊的指針類型不同,則需要進(jìn)行類型強(qiáng)制轉(zhuǎn)換。例:int a;int *pi;char *pc;pi=&a;//pi指向apc=(char*)pi;//pc也指向了a,即pi和pc的值都是a的

6、地址3、普通變量隨著類型的不同,在內(nèi)存中所分配的內(nèi)存單元可能也會(huì)發(fā)生變化。指針變量也是變量,在內(nèi)存中也要占用一定的內(nèi)存單元,但所有類型的指針變量都占用同樣大小的內(nèi)存單元,其具體大小取決于所使用的編譯環(huán)境,如在VC6.0下為4個(gè)字節(jié),在TC2.0下為2個(gè)字節(jié)。二、指針和地址運(yùn)算1、指針變量的加、減運(yùn)算指針可以參與加、減運(yùn)算,但其加、減的含義不同于一般數(shù)值的加減運(yùn)算。如下例:#include"stdio.h"voidmain(){int*pi;char*pc;pi=(int*)1000;printf("pi=%d",pi);

7、pc=(char*)1000;printf("pc=%d",pc);pi++;//pi的值將是1004(假設(shè)int型占4B)printf("pi=%d",pi);pi-=2;//pi的值將是996printf("pi=%d",pi);pc++;//pc的值將是1001printf("pc=%d",pc);pc-=2;//pc的值將是999printf("pc=%d",pc);}如果指針p是這樣定義的:ptype *p;并且p當(dāng)前的值是ADDR,那么:p±n的值=ADDR±n*sizeof(ptype)即指

8、針加上或減去一個(gè)整數(shù)相當(dāng)于將指針以定義時(shí)所用的數(shù)據(jù)類型占用內(nèi)存的字節(jié)數(shù)為單位向后或向前移動(dòng)n個(gè)單位。兩個(gè)指針相加沒有任何意義,但兩個(gè)指針相減則有一定的意義,可表示兩指針之間所相差的內(nèi)存單元數(shù)或元素的個(gè)數(shù),在后面的學(xué)習(xí)中就會(huì)體會(huì)到。2、指針變量的關(guān)系運(yùn)算若p1和p2指向同一類型的變量,則p1

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。