《C語言程序設(shè)計(jì)》11 內(nèi)存管理寫字字帖_第1頁
《C語言程序設(shè)計(jì)》11 內(nèi)存管理寫字字帖_第2頁
《C語言程序設(shè)計(jì)》11 內(nèi)存管理寫字字帖_第3頁
《C語言程序設(shè)計(jì)》11 內(nèi)存管理寫字字帖_第4頁
《C語言程序設(shè)計(jì)》11 內(nèi)存管理寫字字帖_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第十一章內(nèi)存管理12回顧函數(shù)的作用函數(shù)的聲明格式和各部分作用函數(shù)中的實(shí)參和形參的區(qū)別函數(shù)的調(diào)用3回顧字符信息在計(jì)算機(jī)中的描述字符信息的存儲方式字符信息的處理函數(shù)4目標(biāo)了解內(nèi)存地址、指針的概念理解指針和數(shù)組之間的關(guān)系掌握指向一維數(shù)組的指針操作5內(nèi)存地址數(shù)據(jù)類型的不同,每個變量需要分配的內(nèi)存單元數(shù)目也不同每個變量都需要分配連續(xù)的內(nèi)存單元inti=3;Intj=5;floatf字符型變量需要占用1個內(nèi)存單元;短整形變量需要占用連續(xù)的2個內(nèi)存單元;單精度變量需要占用連續(xù)的4個內(nèi)存單元;雙精度變量需要占用連續(xù)的8個內(nèi)存單元。6變量與地址當(dāng)變量只占用一個內(nèi)存單元時,內(nèi)存單元的地址就是變量的地址;當(dāng)變量占用連續(xù)的若干個內(nèi)存單元時,最前面一個單元的地址就是該變量的地址,這一地址稱作為首地址。變量名數(shù)據(jù)類型地址i整型2001j整型2003f單精度2005inti=3,j=5,float=f;7數(shù)組與地址當(dāng)一個數(shù)組占用連續(xù)的若干個內(nèi)存單元時,最前面的單元地址稱為數(shù)組的首地址,也是第一個數(shù)組元素的地址,通常用數(shù)組名代表數(shù)組的首地址數(shù)組占用的總單元數(shù)等于數(shù)組長度*每個數(shù)組元素占用的內(nèi)存單元數(shù)對一個數(shù)組來說,所分配的內(nèi)存單元必須是連續(xù)的,并且是按照順序?qū)?yīng)數(shù)組元素的int[3]={1,2,3};數(shù)組元素a[i]的地址=數(shù)組首地址+i*數(shù)組元素的數(shù)據(jù)類型所占用單元數(shù)數(shù)組元素a[1]的首地址:3000+1*2=30028指針指針是一種數(shù)據(jù)類型,專門用于存放內(nèi)存地址。按照這一類型可以定義相應(yīng)的變量,這個變量就是指針變量,變量中存放的數(shù)據(jù)就是地址地址的寬度是固定的32個二進(jìn)制位,所以指針變量占據(jù)的寬度也是固定的4字節(jié)數(shù)據(jù)類型*指針名=初值數(shù)據(jù)類型不是指針變量中存放的數(shù)據(jù)類型,而是它將要指向的變量或數(shù)組的數(shù)據(jù)類型定義成某種數(shù)據(jù)的指針變量,將來只能用來指向同種數(shù)據(jù)類型的其它變量或數(shù)組*運(yùn)算符是指針運(yùn)算符在此地作用是將一個變量聲明為指針變量?!俺踔怠蓖ǔJ恰?普通變量名”、“&數(shù)組元素”或“數(shù)組名”9指針先定義了整形變量a,然后定義一個指向整形變量的指針變量p,并賦初值為事先定義的變量a的地址,即指針變量p指向整形變量a,指針變量p中存儲著變量a的首地址inta;Int*p=&a;1000H251000H10指針floatf1,f[10];float*p1=&f1;float*p2=f;先定義單精度形變量f1和數(shù)組f;然后定義一個指向單精度形的指針變量p1,并為其賦初值,使其指向變量f1,即指針變量p中存儲著變量f的首地址;最后再定義一個指向單精度形的指針變量p2,并為其賦初值,使其指向事先聲明的一維數(shù)組,即變量p中存儲著一位數(shù)組的首地址。pointer_1=100;pointer_1為指針變量,100位整數(shù)11指針變量的引用方式inti=10;int*p_i;p_i=&i;printf(“通過指針來操縱數(shù)據(jù),顯示變量i的值:%d”,*p_i);1000H10iP_i通過指針來操縱數(shù)據(jù),顯示變量i的值:101000H12指針變量的引用方式inti;int*p_i;p_i=&i;*p=123;printf(“變量i的值:%d\n指針?biāo)赶虻闹担?d\n”,i,*p);指針變量一旦聲明賦初值后,就可以替代它所指向的變量。1000H123iP_i通過指針來操縱數(shù)據(jù),顯示變量i的值:1231000Hinti;int*p_i;p_i=&i;*p=123;printf(“變量i的值:%d\n指針?biāo)赶虻闹担?d\n”,i,*p);指針變量一旦聲明賦初值后,就可以替代它所指向的變量。123iP_i13

指向數(shù)組元素的指針指針變量指向數(shù)組元素,即某一元素的地址放到一個指針變量中inta[10];//定義a為包含10個整形數(shù)據(jù)的數(shù)組int*p; //定義p為指向整型變量的指針變量p=&a[0];//把a(bǔ)[0]元素的地址賦給指針變量p,也就是說,p指向a數(shù)組的第0號元素14指向數(shù)組的指針在聲明數(shù)組時,實(shí)際上是聲明了一個指針,這個指針保存了一個連續(xù)空間的首地址,這個指針就是數(shù)組名和普通指針不一樣的一點(diǎn)在于,數(shù)組名中保存的地址是恒定不變的,而普通的指針變量中保存的地址是可以改變的inta[10];int*p=a;intx;p=&x;inta[10],b[10];a=b;1000HaP1000H01……52342000Hx2000H15指向數(shù)組的指針的移動指針變量p已指向數(shù)組中的一個元素

則可以通過指針自加來訪問數(shù)組中的其它元素:p+1指向同一個數(shù)組中的下一個元素。

inta[10];int*p=a;intx=*(p+2)例如數(shù)組元素是實(shí)型,每個元素占4個字節(jié),則p+1所代表的地址實(shí)際上是p+1*d,d是一個數(shù)組元素所占據(jù)的字節(jié)數(shù)1000Ha01……52342000HP1000HP+2x*(p+5)=*(a+5)=a[5]16指向字符串的指針第一種方法是給指針變量賦初值的方式,格式為“*指針變量=字符串常量”

第二種方法是先定義一個字符型指針變量,然后再賦值的方式,其格式為“指針變量=字符串常量”。char*p=“ABCDE”char*p;p=“ABCD”1000H匿名P1000HA B……\0CDE17指向數(shù)組的指針示例判斷所輸入的字符串是否是數(shù)字字符串

#include"stdafx.h"#include"string.h"voidmain(){ char*p1="0123456789"; chara[100];/*指針p2指向數(shù)組中第一個元素的首地址,也可寫成char*p=a效果是一樣的,只是含義有所不同,代碼中指針式指向數(shù)組中元素的,而char*p=a是指向數(shù)組的。*/char*p2=&a[0];/*設(shè)標(biāo)志位初值0,代表不為數(shù)字。*/ charflag='0'; printf("請輸入待處理的字符串\n"); gets(a);18指向數(shù)組的指針示例while(*p2!='\0')//p2指針?biāo)赶虻臄?shù)組中的元素是否為字符串結(jié)束標(biāo)記{while(*p1!='\0')//p1指針?biāo)赶虻臄?shù)組中的元素是否為字符串結(jié)束標(biāo)記

{/*如果兩個指針?biāo)赶虻脑叵嗤摧斎胱址械漠?dāng)前元素為數(shù)字,那么跳出內(nèi)層循環(huán),讀取下一個待比較的元素*/if(*p2==*p1){ flag='1';break;}p1++;//p1指針移動到下一個元素

}if(flag=='0') break;p2++;//p2指針移動到下一個元素19指向數(shù)組的指針示例} if(flag=='1') printf("所輸入的字符串為純數(shù)字串"); else printf("所輸入的字符串不是純數(shù)字串");}20指向數(shù)組的指針示例輸入n個單精度數(shù)存入一維數(shù)組,用指針變量處理數(shù)組元素的方式將其逆序存放后輸出。N從鍵盤輸入。#include"stdafx.h"voidmain(){ floata[20],x,*pb,*pe; intn,k,i; scanf("%d",&n); pb=a; for(i=0;i<n;i++) scanf("%f",pb++);//通過移動指針完成數(shù)組a元素的賦值

k=n/2;//設(shè)置需要交換的最大下標(biāo)21指向數(shù)組的指針示例for(i=0,pb=a,pe=a+n-1;i<k;i++,pb++,pe--)/*pe指向數(shù)組中最后一個有效元素,a+n-1中a代表數(shù)組首地址,n-1即為從0開始到n-1共n個

溫馨提示

  • 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

提交評論