




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
地址和指針的概念為了說(shuō)清楚什么是指針,必須弄清楚數(shù)據(jù)在內(nèi)存中是如何存儲(chǔ)的,又是如何讀取的。內(nèi)存區(qū)的每一個(gè)字節(jié)有一個(gè)編號(hào),這就是“地址”。如果在程序中定義了一個(gè)變量,在對(duì)程序進(jìn)行編譯時(shí),系統(tǒng)就會(huì)給這個(gè)變量分配內(nèi)存單元。1、按變量地址存取變量值的方式稱為“直接訪問(wèn)”方式printf(″%d″,i);scanf(″%d″,&i);k=i+j;例如:地址和指針的概念另一種存取變量值的方式稱為“間接訪問(wèn)”的方式。即,將變量i的地址存放在另一個(gè)變量中。在C語(yǔ)言中,指針變量是一種特殊的變量,它是存放地址的。假設(shè)我們定義了一個(gè)指針變量i_pointer用來(lái)存放整型變量的地址,它被分配地址為(3010)、(3011)、(3012)、(3013)的四個(gè)字節(jié)??梢酝ㄟ^(guò)語(yǔ)句:i_pointer=&i;將i的地址(2000)存放到i_pointer中。這時(shí),
i_pointer的值就是(2000),即變量i所占用單元的起始地址。要存取變量i的值,可以采用間接方式:先找到存放“i的地址”的變量i_pointer
,從中取出i的地址(2000),然后到2000、2001、2002、2003字節(jié)取出i的值。指針和指針變量一個(gè)變量的地址稱為該變量的“指針”。例如,地址2000是變量i的指針。如果有一個(gè)變量專門(mén)用來(lái)存放另一變量的地址(即指針),則它稱為“指針變量”。上述的i_pointer就是一個(gè)指針變量。指針和指針變量的定義:指針變量的值(即指針變量中存放的值)是地址(即指針)。請(qǐng)區(qū)分“指針”和“指針變量”這兩個(gè)概念。總結(jié)變量:命名的內(nèi)存空間,用于存放各種類(lèi)型的數(shù)據(jù)。變量名:變量名是給內(nèi)存空間取的一個(gè)容易記憶的名字。 通過(guò)變量名直接訪問(wèn)內(nèi)存單元變量的地址:變量所使用的內(nèi)存空間的地址。變量值:在變量單元中存放的數(shù)值。即變量的內(nèi)容??偨Y(jié)地址:內(nèi)存單元的編號(hào)也叫做地址。指針:內(nèi)存單元地址稱為指針,即指針就是地址。指針變量:存放指針(地址)的變量稱為指針變量。(間接訪問(wèn))各種類(lèi)型變量都有地址,通過(guò)地址(指針)或變量名訪問(wèn)變量。直接訪問(wèn):在程序中使用變量名(變量地址)存取變量值的方式,稱為“直接訪問(wèn)”方式。
間接訪問(wèn):定義一個(gè)指針變量來(lái)存放了一個(gè)變量的地址,通過(guò)指針變量存取變量的值,稱為“間接訪問(wèn)”方式。指針變量的定義變量的指針和指向變量的指針變量定義一個(gè)指針變量定義指針變量的一般形式為基類(lèi)型*指針變量名;int*ptr;說(shuō)明指針變量的類(lèi)型:指明了該指針指向的內(nèi)存空間所存儲(chǔ)的數(shù)據(jù)類(lèi)型。定義中的“*”表示所定義的變量是指針變量。變量名是ptr,而非*ptr。指針變量的引用請(qǐng)牢記,指針變量中只能存放地址(指針),不要將一個(gè)整數(shù)(或任何其他非地址類(lèi)型的數(shù)據(jù))賦給一個(gè)指針變量通過(guò)指針變量訪問(wèn)整型變量給指針賦值通過(guò)&運(yùn)算符為指針賦值,例如:ptr_var=&var;通過(guò)另一個(gè)指向相同類(lèi)型數(shù)據(jù)項(xiàng)的指針變量對(duì)指針進(jìn)行賦值,例如:ptr_var2=ptr_var;將地址直接賦值給指針變量int*ptr_var3=(int*)malloc(sizeof(int)); malloc()函數(shù)申請(qǐng)動(dòng)態(tài)分配內(nèi)存空間,返回空間首地址; free()函數(shù)釋放不用內(nèi)存空間。 給指針變量賦值為符號(hào)常量NULL例如:float*ptr_var4=NULL;說(shuō)明:NULL是一個(gè)空指針,表示該指針變量的值沒(méi)有意義,作用是為了避免對(duì)沒(méi)有被初始化的指針變量的非法引用,NULL的定義在“stdio.h”中。給指針賦值數(shù)組的首地址賦予指針變量。 例如:inta[5],*p;p=a;或?qū)憺椋簆=&a[0];或:inta[5],*p=a;字符串首地址賦予指針變量。 例如:char*pc;pc="Hello"; 或?qū)憺椋篶har*pc="Hello"; 說(shuō)明:并不是把整個(gè)字符串裝入指針變量,而是把存放該字符串的首地址裝入指針變量。函數(shù)的入口地址賦予指針變量。例如: int(*pf)(void);intfunc(void) pf=func;/*func為函數(shù)名*/指針運(yùn)算符&是取地址運(yùn)算符(一元運(yùn)算符),它返回操作數(shù)的內(nèi)存地址例如:intvar=12,*ptr; ptr=&var;*是取內(nèi)容運(yùn)算符,是&的反運(yùn)算符,它也是一元運(yùn)算符,返回指針指向的內(nèi)存位置中的值例如:intvar=12,*ptr=&var; inttemp=*ptr; //等價(jià)于temp=var;指針運(yùn)算符對(duì)“&”和“*”運(yùn)算符說(shuō)明:(“&”和“*”兩個(gè)運(yùn)算符的優(yōu)先級(jí)別相同,但按自右而左方向結(jié)合)如果已執(zhí)行了語(yǔ)句pointer_1=&a;pointer_2=&b;(1)pointer_2=&*pointer_1?先進(jìn)行*
pointer_1的運(yùn)算,它就是變量a,再執(zhí)行&運(yùn)算。&*pointer_1與&a相同,即變量a的地址,就是將&a(a的地址)賦給pointer_2
指針運(yùn)算符指針運(yùn)算符(2)
*&a?&*a?先進(jìn)行&a運(yùn)算,得a的地址,再進(jìn)行*運(yùn)算。即&a所指向的變量,也就是變量a。*&a和*pointer_1的作用是一樣的,它們都等價(jià)于變量a。即*&a與a等價(jià)。(3)
(*pointer_1)++和*pointer_1++*pointer_1++:++和*為同一優(yōu)先級(jí)別,而結(jié)合方向?yàn)樽杂叶?,因此它相?dāng)于*(pointer_1++)。由于++在pointer_1的右側(cè),是“后加”,因此先對(duì)pointer_1的原值進(jìn)行*運(yùn)算,得到a的值,然后使pointer_1的值改變,這樣pointer_1不再指向a了。(*pointer_1)++:*pointer_1相當(dāng)a,所以整個(gè)表達(dá)式相當(dāng)于a++指針的算術(shù)運(yùn)算只能進(jìn)行加法和減法運(yùn)算:+-++--+=-=兩種形式:指針±整數(shù)或者指針-指針指針與整型值加減的結(jié)果是指針,表示使該指針指向該指針下移或上移存儲(chǔ)單元個(gè)數(shù)(整型值)之后的內(nèi)存地址。存儲(chǔ)單元的大小就是該指針的數(shù)據(jù)類(lèi)型所需的內(nèi)存大小。指針與指針的減運(yùn)算要求相減的兩個(gè)指針屬于同一類(lèi)型,其結(jié)果是整數(shù),表示兩個(gè)指針之間的數(shù)據(jù)的個(gè)數(shù)。//不是字節(jié)數(shù)例如: intvar,*ptr_var; ptr_var=&var; ptr_var++; 假定var存儲(chǔ)在地址1000中,因?yàn)檎麛?shù)的長(zhǎng)度是4個(gè)字節(jié),ptr_var的值將是1004在哪里有使用過(guò)指針-指針?指針的算術(shù)運(yùn)算指針遞增時(shí),將指向其類(lèi)型的下一個(gè)元素的內(nèi)存位置,反之亦然操作意義++ptr_var或ptr_var++指向var后面的下一個(gè)整數(shù)--ptr_var或ptr_var--指向var前面的整數(shù)ptr_var+i指向var后面的第i個(gè)整數(shù)ptr_var-i指向var前面的第i個(gè)整數(shù)指針比較前提:兩個(gè)指針都指向相同類(lèi)型的變量假設(shè)ptr_a和ptr_b分別指向a和b操作意義ptr_a<ptr_b如果a存儲(chǔ)在b的前面則返回trueptr_a<=ptr_b如果a存儲(chǔ)在b的前面,或兩個(gè)指針指向同一位置則返回trueptr_a==ptr_b如果兩個(gè)指針指向同一位置則返回trueptr_a!=ptr_b如果兩個(gè)指針指向不同位置則返回trueptr_a==NULL如果ptr_a是空值則返回true指針按地址傳遞指針可以作為參數(shù)把實(shí)參的地址傳給形參允許函數(shù)訪問(wèn)內(nèi)存位置被調(diào)函數(shù)能夠修改主調(diào)程序的參數(shù)的值定義 getstr(char*ptr_str,int*ptr_int);使用 getstr(pstr,&var);指針和一維數(shù)組一個(gè)數(shù)組包含若干元素,每個(gè)數(shù)組元素都在內(nèi)存中占用存儲(chǔ)單元,它們都有相應(yīng)的地址。指針變量既然可以指向變量的地址,當(dāng)然也可以指向數(shù)組和數(shù)組元素。所謂數(shù)組的指針(數(shù)組的名稱)是指數(shù)組的起始地址,也就是第一個(gè)元素的地址。數(shù)組的指針是個(gè)常量指針。數(shù)組元素的地址可以用兩種方式表示在數(shù)組元素前面加“&”符號(hào) &ary[2]數(shù)組名+下標(biāo) ary+2引用數(shù)組元素下標(biāo)法:inta[8]={2,4,6,8,10,12,14,16};a[i]?指針int*p=a;或者int*p=&a[0];注意:a代表數(shù)組首地址,而不是整個(gè)數(shù)組引用數(shù)組元素 *(p+i)、*(a+i)、p[i]、a[i]此時(shí),p++是允許的,a++是錯(cuò)誤的。執(zhí)行p++,p指向下一個(gè)元素,即a[1]。*p為a[1]的值。*p++,相當(dāng)于*p,p++。*(p++)與*(++p)作用不同。(*p)++,表示將p所指向的元素值加1.數(shù)組作為參數(shù)傳遞一維數(shù)組元素作參數(shù)傳遞時(shí),按值傳遞整個(gè)數(shù)組(數(shù)組名)當(dāng)參數(shù)傳遞時(shí),按地址傳遞,有以下三種等價(jià)的寫(xiě)法:voidtest_array(chararray[]);voidtest_array(chararray[LEN]);voidtest_array(char*array);數(shù)組作為參數(shù)傳遞歸納起來(lái),如果有一個(gè)實(shí)參數(shù)組,想在函數(shù)中改變此數(shù)組中的元素的值,實(shí)參與形參的對(duì)應(yīng)關(guān)系有以下4種情況:(1)形參和實(shí)參都用數(shù)組名,如:voidmain()voidf(intx[],intn){inta[10];{……
f(a,10);}}(2)實(shí)參用數(shù)組名,形參用指針變量。如:voidmain()voidf(int*x,intn){inta[10]; {……
f(a,10);} }數(shù)組作為參數(shù)傳遞(3)實(shí)參形參都用指針變量。例如:voidmain()voidf(int*x,intn){inta[10],*p=a; {……f(p,10); }}(4)實(shí)參為指針變量,形參為數(shù)組名。如:voidmain()voidf(intx[],intn){inta[10],*p=a;{……f(p,10)}}指向字符串常量的字符指針可以聲明字符指針直接指向字符串常量,例如char*pStr=“e”;字符指針pStr將指向字符常量“e”“e”為字符串常量,因此其值不能修改,例如代碼pStr[0]=‘h’;將引發(fā)一個(gè)錯(cuò)誤區(qū)別字符數(shù)組Welcome\0字符串常量不能改變指向字符串變量的字符指針可以使用字符指針來(lái)存儲(chǔ)和訪問(wèn)字符串聲明字符指針語(yǔ)法:char*pStr;聲明字符串:charstr[10]=“hello”;使用字符指針指向字符串:pStr=str;可以使用字符指針訪問(wèn)字符串,例如pStr[0]=‘a(chǎn)’;該代碼將第一個(gè)字符修改為’a’char*pstr="e";charstr[]="e";pstr[0]='h'; str[0]='h';pstr="hello"; str="hello";字符串常量和字符串變量區(qū)別字符串常量和字符串變量一樣,都是一個(gè)一維字符數(shù)組。兩者的區(qū)別在于: 字符串變量的名字(一維字符數(shù)組名)及其所需的存儲(chǔ)空間是顯式定義的,并通過(guò)名字來(lái)引用相應(yīng)的字符串變量。而字符串常量所需的存儲(chǔ)空間是隱式定義的,并且其根本就沒(méi)有名字。字符數(shù)組和字符指針的區(qū)別字符數(shù)組字符指針字符數(shù)組由若干個(gè)元素組成,每一個(gè)元素是一個(gè)字符。characBuf[]={“hello”};字符指針變量中存放的是字符串的首地址,而不是把字符放到字符指針變量中。char*ptr={“hello”};對(duì)于字符數(shù)組,只能對(duì)各個(gè)元素賦值,或者通過(guò)strcpy()整體賦值。acBuf=”123”;//錯(cuò)的字符指針變量可以直接通過(guò)賦值運(yùn)算符,使用字符串對(duì)整體賦值。char*ptr;ptr=“hello”;新定義的數(shù)組在編譯時(shí)分配內(nèi)存單元,有確定的地址新定義的指針變量,無(wú)具體的值.解決辦法是,把一個(gè)已定義的字符數(shù)組的地址賦給這個(gè)指針變量雖然字符數(shù)組名也表示數(shù)組的首地址,但是卻不能通過(guò)賦值的方法改變字符指針變量的值是可以改變的,。字符數(shù)組和字符指針作返回值#include<stdio.h>char*print(){ characStr[]="helloworld"; returnacStr;}voidmain(){ char*pcStr;pcStr=print();puts(pcStr);}#include<stdio.h>char*print(){ char*pcStr="helloworld"; returnpcStr;}voidmain(){ char*pcStr;pcStr=print();puts(pcStr);}通過(guò)指針引用二維數(shù)組元素在C語(yǔ)言中,一個(gè)二維數(shù)組可以看成是一個(gè)一維數(shù)組,其中每個(gè)元素又是一個(gè)包含若干元素的一維數(shù)組。例如:inta[3][5];a[0]、a[1]和a[2]分別是包含五個(gè)元素的一維數(shù)組名,分別代表a數(shù)組元素的起始地址(即a[0]是第0行元素的首地址,a[1]是第1行元素的首地址)。a[i]和*(a+i)(無(wú)條件等價(jià))都是第i行第0列元素的地址,那么a[i]+j、*(a+i)+j、&a[0][0]+3*i+j都是第i行第j列元素的地址。例如:inta[3][5],(*p)[5];p=a;對(duì)二維數(shù)組的引用有三種方式:下標(biāo)法。如a[i][j]或p[i][j]。指針針?lè)ǎ?(*(p+i)+j)或*(*(a+i)+j)。引用二維數(shù)組元素(1)用數(shù)組名表示二維數(shù)組的行地址inta[3][4];假設(shè)其首地址為2000 a為二維整型數(shù)組名,a=2000。(數(shù)組名總是代表數(shù)組的首地址) a+0就是第0行的首地址2000。即為a[0] a+1代表第一行首地址。為2008。即為a[1] a+2代表第二行首地址。即2016。即為a[2](2)用數(shù)組名表示二維數(shù)組元素地址 二維數(shù)組中a[0]、a[1]、a[2]都是地址, 則有:*(a+0)、*(a+1)和*(a+2)也是地址,它們分別是第0行、1行和2行的第0列地址。 因此,a[0]+1等介于*(a+0)+1,即&a[0][1]。 a[1]+2等介于*(a+1)+2,即&a[1][2]。 a[2]+3等介于*(a+1)+3,即&a[1][3]。 a[0][1]的值可表示為:*(a[0]+1)和*(*(a+0)+1) a[i][j]的值可表示應(yīng)為:*(a[i]+j)和*(*(a+i)+j)。指針與二維數(shù)組示例#include<stdio.h>#include<stdlib.h>voidmain(){ intaiNum[3][3]={{1,2,3},{4,5,6},{7,8,9}};int(*p)[5];inti,j; p=aiNum; for(i=0;i<3;i++){ for(j=0;j<3;j++) printf("%d\t",*(*(p+i)+j));} putchar('\n');for(i=0;i<3;i++){for(j=0;j<3;j++) printf("%d\t",*(p[i]+j));}putchar('\n');for(i=0;i<3;i++){for(j=0;j<3;j++) printf("%d\t",*(&p[0][0]+i*3+j));}putchar('\n');for(i=0;i<3;i++){for(j=0;j<3;j++) printf("%d\t",(*(p+i))[j]);}putchar('\n');}二維數(shù)組作為函數(shù)參數(shù)當(dāng)二維數(shù)組名作為函數(shù)實(shí)參時(shí),對(duì)應(yīng)的形參必須是一個(gè)行指針變量。和一維數(shù)組一樣,數(shù)組名傳送給變量的是一個(gè)地址值,因此,對(duì)應(yīng)的形參也必須是一個(gè)類(lèi)型相同的指針變量,在函數(shù)中引用的將是主函數(shù)中的數(shù)組元素,系統(tǒng)只為形參開(kāi)辟一個(gè)存放地址的存儲(chǔ)單元,而不可能在調(diào)用函數(shù)時(shí)為形參開(kāi)辟一系列存放數(shù)組的存儲(chǔ)單元。intmain(){ intiNum[3][4]; …… fun(iNum); ……}fun(int(*iNum)[4]){ ……}fun(intarray[][4]){ ......}數(shù)組元素三種形式引用:⑴a[i][j]下標(biāo)法⑵*(a[i]+j)用一維數(shù)組名⑶*(*(a+i)+j)用二維數(shù)組名指針數(shù)組指針數(shù)組就是其元素為指針的數(shù)組每一個(gè)元素都是指針變量說(shuō)明指針數(shù)組的語(yǔ)法格式為:數(shù)據(jù)類(lèi)型*指針數(shù)組名[常量表達(dá)式];例如:int*p1[6];指針數(shù)組主要用于字符串的操作例如:char*name[3]={“Rose”,“Smith”,“John”};注意:與一個(gè)指向二維數(shù)組的指針變量的區(qū)別,int(*p1)[6]和int*p1[6]之間的區(qū)別指針數(shù)組的示例#include<stdio.h>intmain(){ inti; char*menu[5]= {"aaa","bbbb","ccc",”dd","ee"}; for(i=0;i<5;i++){ puts(menu[i]); } return0;}char*pmenu[5],menu[5][10]={"aaa","bbbb","ccc",”dd","ee"};for(i=0;i<5;i++) pmenu[i]=menu[i];for(i=0;i<5;i++) puts(pmenu[i]);char(*pmenu)[10],menu[5][10]={"aaa","bbbb","ccc",”dd","ee"};pmenu=menu;for(i=0;i<5;i++){ puts(pmenu[i]);}結(jié)構(gòu)體指針結(jié)構(gòu)體指針是通過(guò)在結(jié)構(gòu)體變量名前放置一個(gè)星號(hào)(*)來(lái)進(jìn)行聲明的->運(yùn)算符用于通過(guò)指針來(lái)訪問(wèn)結(jié)構(gòu)體的元素示例:structstStudentstStu;structstStudent*pstStu;pstStu=&stStu;printf("%s",pstStu->acName);structstStudent{characName[10]; intiNO;intiAge;};結(jié)構(gòu)體定義時(shí)不能定義自身結(jié)構(gòu)體變量,但可以定義自身的指針指針的指針voidmain(){ inti=6,*p,**dp; p=&i; dp=&p; printf(“%4d,%4d,%4d\n”,i,*p,**dp); printf(“%4x,%4x,%4x\n”,&i,p,*dp); printf(“%4x,%4x”,&p,dp);}一種變量專門(mén)用來(lái)存放指針變量的地址,這種變量我們稱之這指針的指針變量語(yǔ)法定義:type**name;示例:變量地址內(nèi)存值i0x10106………p0x24360x1010………dp0x33440x2436內(nèi)存示意圖函數(shù)指針函數(shù)在內(nèi)存中的物理位置-函數(shù)的入口點(diǎn)#include<stdio.h>intfun(inta,intb,int(*call)(int,int)){return(call(a,b));}intmain(){printf("max=%d\n",fun(1,2,max));printf("min=%d\n",fun(3,4,min));printf("sum=%d\n",fun(5,6,sum));return0;}指針數(shù)據(jù)類(lèi)型小結(jié)定義含義int*p;p為指向整型數(shù)據(jù)的指針變量int*p[n];定義指針數(shù)組p,它有n個(gè)指向整型數(shù)據(jù)的指針元素int(*p)[n];p為指向含n個(gè)元素的一維數(shù)組的指針變量,行指針,數(shù)組指針int*p();p為帶回一個(gè)指針的函數(shù),該指針指向整型數(shù)據(jù),函數(shù)返回值指針int(*p)();p為指向函數(shù)的指針,該函數(shù)返回一個(gè)整型值,函數(shù)指針int**p;p是一個(gè)指針變量,它指向一個(gè)指向整型數(shù)據(jù)的指針變量,指針的指針無(wú)類(lèi)型指針無(wú)類(lèi)型指針可以指向任何類(lèi)型的數(shù)據(jù)無(wú)類(lèi)型指針定義:void*p;可以將任意類(lèi)型的指針賦給無(wú)類(lèi)型指針,但不能將無(wú)類(lèi)型指針賦給其它類(lèi)型指針,如: int*q,*m; p=q; /*允許賦值*/ m=(int*)p; 不能將無(wú)類(lèi)型指針參與算術(shù)運(yùn)算,如:p++;//錯(cuò)誤,進(jìn)行算法操作的指針必須是確定知道其指向的數(shù)據(jù)類(lèi)型大小,將其改成:((int*)p)++;則能通過(guò)無(wú)類(lèi)型指針主要作用對(duì)函數(shù)返回的限定(malloc函數(shù))對(duì)函數(shù)參數(shù)的限定(memcpy函數(shù))const限定符最低訪問(wèn)原則——良好的程序設(shè)計(jì)風(fēng)格可用于不允許被修改的變量和形式參數(shù),保護(hù)實(shí)參 voidoutput(constdouble*pd) { printf(“%d”,*pd); /*允許*/ *pd=15.5; /*不允許!*/ }聲明const變量時(shí)需要初始化constintstuNum=100;指向常量數(shù)據(jù)的指針指針的值可以改變,無(wú)法通過(guò)指針修改指向的內(nèi)容關(guān)鍵字const放在指針類(lèi)型前例如: inti,j,*q;
constint*p; /*等價(jià)于intconst*p;*/ p=&j; /*允許*/ p=&i; /*允許*/ i=10; /*允許*/ *p=5; /*不允許*/
指針常量指針常量又稱為常指針指針的值不能修改,指向的內(nèi)容可以修改關(guān)鍵字const放在“*”號(hào)和指針名之間例如:intvar1,var2;int*constp=&var1;*p=5; /*允許*/p=&var2; /*不允許*/指針與動(dòng)態(tài)內(nèi)存分配1、靜態(tài)內(nèi)存分配
當(dāng)程序中定義變量或數(shù)組以后,系統(tǒng)就會(huì)給變量或數(shù)組按照其數(shù)據(jù)類(lèi)型及大小來(lái)分配相應(yīng)的內(nèi)存單元,這種內(nèi)存分配方式稱為靜態(tài)內(nèi)存分配。intk;//系統(tǒng)將給變量k分配4個(gè)字節(jié)的內(nèi)存單元charch[10];//系統(tǒng)將給這個(gè)數(shù)組ch分配10個(gè)字節(jié)的內(nèi)存塊,首地址就是ch的值靜態(tài)內(nèi)存分配一般是在已知道數(shù)據(jù)量大小的情況下使用
例如,要對(duì)10個(gè)學(xué)生的成績(jī)按降序輸出,則可定義一個(gè)數(shù)組:intscore[10];用于存放10個(gè)學(xué)生的成績(jī),然后再進(jìn)行排序。
如果事先并不知道學(xué)生的具體人數(shù),編寫(xiě)程序時(shí),人數(shù)由用戶輸入,然后再輸入學(xué)生的成績(jī)。那又如何如何處理呢?intn;intscore[n];scanf("%d",&n);如何解決?動(dòng)態(tài)內(nèi)存分配指針與動(dòng)態(tài)內(nèi)存分配2、動(dòng)態(tài)內(nèi)存分配
所謂動(dòng)態(tài)內(nèi)存分配是指在程序運(yùn)行過(guò)程中,根據(jù)程序的實(shí)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 增進(jìn)疾病預(yù)防知識(shí)宣傳的措施計(jì)劃
- 2025年硅酮結(jié)構(gòu)密封膠項(xiàng)目合作計(jì)劃書(shū)
- 華東師大版七年級(jí)數(shù)學(xué)下冊(cè)全冊(cè)教案(2024年春季版)
- 2025年大數(shù)據(jù)金融項(xiàng)目建議書(shū)
- 昆蟲(chóng)記中的生命奧秘征文
- 太陽(yáng)能光伏系統(tǒng)投資合同
- Pyridoxine-tri-2-hexyldecanoate-生命科學(xué)試劑-MCE
- Imidazole-salicylate-Standard-生命科學(xué)試劑-MCE
- 工業(yè)廢水處理與循環(huán)利用項(xiàng)目合同
- 自卸車(chē)自愿租賃協(xié)議書(shū)
- 廣東省廣州市黃埔區(qū)2023-2024學(xué)年八年級(jí)上學(xué)期期末生物試卷+
- 我們?cè)鯓铀季S經(jīng)驗(yàn)與教育
- 北京市豐臺(tái)區(qū)市級(jí)名校2024屆數(shù)學(xué)高一第二學(xué)期期末檢測(cè)模擬試題含解析
- 趙匡胤:中國(guó)北宋時(shí)期的開(kāi)國(guó)皇帝2
- 中國(guó)紡織服裝制造業(yè)年度授信政策指引研究報(bào)告
- 零基礎(chǔ)學(xué)機(jī)器學(xué)習(xí)
- 西方繪畫(huà)藝術(shù)流派(最全)課件
- 預(yù)防保健科護(hù)理管理質(zhì)量控制考核標(biāo)準(zhǔn)
- 皮下抗凝劑的注射規(guī)范
- 食管癌護(hù)理小講課課件
- 護(hù)理組長(zhǎng)競(jìng)聘講稿-護(hù)理組長(zhǎng)競(jìng)聘主題教學(xué)課件
評(píng)論
0/150
提交評(píng)論