版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第五章數(shù)組第五章數(shù)組5.1 5.1 數(shù)組的定義和運(yùn)用數(shù)組的定義和運(yùn)用x1 x2 x3 x4 x5 x6 x7 x8 x1 x2 x3 x4 x5 x6 x7 x8 x1 x2 x3 x4 x5 x6 x7 x8x0 x1 x2 x3 x4 x5 x6 x7 int x8;for (i=0; i8; i+) printf(%d,xi);數(shù)組數(shù)組: :一組一樣類型的變量一組一樣類型的變量 元素個(gè)數(shù)確定元素個(gè)數(shù)確定 這些數(shù)按一定次序存放這些數(shù)按一定次序存放 用一個(gè)一致的名字表示這組數(shù)用一個(gè)一致的名字表示這組數(shù) 用不同的下標(biāo)來區(qū)分它們用不同的下標(biāo)來區(qū)分它們 在內(nèi)存用延續(xù)的存儲(chǔ)單元存放數(shù)組元素在內(nèi)存用延
2、續(xù)的存儲(chǔ)單元存放數(shù)組元素?cái)?shù)組是一樣類型數(shù)據(jù)的有序集合數(shù)組是一樣類型數(shù)據(jù)的有序集合135689472 100 1 2 3 4 5 6 7 8 9abcdgdfk0 1 2 3 4 5 6 7 s0 1 2 3 4 5 6 7 8 9int s10; int a10;int c34;char b456;135689472 10a0 1 2 3 4 5 6 7 8 9一維數(shù)組一維數(shù)組三維數(shù)組三維數(shù)組c二維數(shù)組二維數(shù)組c對(duì)應(yīng)的下標(biāo)對(duì)應(yīng)的下標(biāo)2.數(shù)組的存儲(chǔ)組織數(shù)組的存儲(chǔ)組織int a6=0,11,22,33,44,55; 01122334455100104108112116120值值地址地址a數(shù)組名代表
3、數(shù)組名代表數(shù)組的首地址數(shù)組的首地址int b34=1,2,3,4,5,6,7,8,9,10,11,12;1231 4567891 101112200204208212216220224228232236240244b數(shù)組名代表數(shù)組名代表數(shù)組的首地址數(shù)組的首地址二、數(shù)組的運(yùn)用二、數(shù)組的運(yùn)用只能對(duì)數(shù)組元素逐個(gè)運(yùn)用只能對(duì)數(shù)組元素逐個(gè)運(yùn)用不能整體援用不能整體援用數(shù)組名代表數(shù)組的首地址數(shù)組名代表數(shù)組的首地址程序中需求確保下標(biāo)不越界程序中需求確保下標(biāo)不越界int a10,b10; a=b; 輸入數(shù)組各元素的值輸入數(shù)組各元素的值for (i=0; i10; i+) scanf(%d,&ai);int
4、 a10;scanf(%d,&a0);scanf(%d,&a1);scanf(%d,&a2);.for (j=0; j4; j+) scanf(%d,&b0j);int b34;scanf(%d,&b00);scanf(%d,&b01);scanf(%d,&b02);scanf(%d,&b03);.for(i=0; i3; i+) for (j=0; j4;j+) scanf(%d,&bij); for(i=0; i10; i+) printf(%3d,ai);數(shù)組各元素值的輸出數(shù)組各元素值的輸出for(i=0; i3;
5、i+) for(j=0; j4; j+) printf(%3d,bij); printf(n); 1 2 3 4 5 6 7 8 3 5 2 9 1 2 3 4 5 6 7 8 3 5 2 9 s=0; for (i=0; i10; i+) s+= ai;留意:留意: 下標(biāo)溢出下標(biāo)溢出 未初始化的非未初始化的非static數(shù)組元素?zé)o初值數(shù)組元素?zé)o初值 max=a0; for (i=1; i10; i+) if(maxai) max=ai;int a10;int a10;(1)(1)計(jì)算計(jì)算1010個(gè)整數(shù)的和個(gè)整數(shù)的和(2)(2)找找1010個(gè)數(shù)的最大值個(gè)數(shù)的最大值輸入輸入N個(gè)成果,找出最高分并
6、計(jì)算平均分個(gè)成果,找出最高分并計(jì)算平均分#define N 8int main( ) int aN,i, max; float average; for(i=0; iN; i+) scanf(%d,&ai);average=max=a0; for(i=1; imax) max=ai; average+=ai; average/=N;printf(max=%d, average=%fn,max,average);常見錯(cuò)誤常見錯(cuò)誤 int n=15; int datan; 只能定義靜態(tài)數(shù)組只能定義靜態(tài)數(shù)組 int data5; data5=10; /定義與援用時(shí)定義與援用時(shí)55表示不同含義
7、表示不同含義 int a10,i; for(i=1; i=10; i+) scanf(%d,&ai); int a10; float i;ai=10;5.2 5.2 數(shù)組的初始化數(shù)組的初始化int a10=0,1,2,3,4,5,6,7,8,9;int a10=0,1,2,3,4,5,6,7,8,9;int d5=0,1,2,3,4;int d5=0,1,2,3,4;int b34=1,2,3,4,5,6,7,8,9,10,11,12;int b34=1,2,3,4,5,6,7,8,9,10,11,12;int p34=1,2,3,4,5,6,7,8,9,10,11,12;int p3
8、4=1,2,3,4,5,6,7,8,9,10,11,12;char c5=h, a, p, p, char c5=h, a, p, p, y;y;沒有初始化,值天知道!沒有初始化,值天知道!static數(shù)組假設(shè)未賦初值,每個(gè)分量均為數(shù)組假設(shè)未賦初值,每個(gè)分量均為0static char ch8;static int h10;0 1 2 3 4 5 6 7 8 90 1 2 3 4 5 6 7 int c =1,2,3,4,5; int f 4=2,3,4,5,6,5;12345c2000f3456500053在數(shù)組元素全部列出的情況下,第一維可以不指定長(zhǎng)度在數(shù)組元素全部列出的情況下,第一維可以
9、不指定長(zhǎng)度char w =I, , w, i, l, l;6115w只給一部分分量賦初值只給一部分分量賦初值 int a10=0,1,2,3,4; int b10=0; int t34=1,5,9; int h34= ,0,6,0,0,11;1590t0000000001234a0000000000b000000000h060000110char ch55=I,m, ,a,s,t;I0000m000a00s0000t00073000032 109 00032 32 9700115 000032 116 000字符字符ASCIIASCII碼碼char c510=I, t, , i, s;Itis
10、0000073 116 32 105115 000005.3 數(shù)組運(yùn)用舉例按相反的順序存儲(chǔ)數(shù)組元素按相反的順序存儲(chǔ)數(shù)組元素 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 數(shù)值數(shù)值下標(biāo)下標(biāo)a0a9a1a8a2a7a3a6a4a59=10 -0 -18=10 -1 -17=10 -2 -16=10 -3 -15=10 -4 -1aia10-i-1int main( )int i , t , a10; for(i=0; i10; i+) scanf(%d,&ai); for (i=0; i10/2; i+) t=ai; ai=a10i1; a101i=t ;
11、 for(i=0; i10;i+) printf(%d,ai); putchar(n); return 0;交換排序交換排序一組數(shù),每次用第一個(gè)數(shù)依次與后面的一組數(shù),每次用第一個(gè)數(shù)依次與后面的數(shù)比較,假設(shè)第一個(gè)數(shù)大那么交換。一數(shù)比較,假設(shè)第一個(gè)數(shù)大那么交換。一趟排序完成后第一個(gè)數(shù)最小。數(shù)的個(gè)數(shù)趟排序完成后第一個(gè)數(shù)最小。數(shù)的個(gè)數(shù)依次減少,共進(jìn)展依次減少,共進(jìn)展n-1n-1趟排序。趟排序。i=0;for(j=1; jaj) temp=ai; ai=aj; aj=temp; i=0;for(j=i+1; jaj) temp=ai; ai=aj; aj=temp; for (i=0; in-1; i+
12、) for(j=i+1; jaj) temp=ai; ai=aj; aj=temp; 選擇排序選擇排序選擇排序的思想選擇排序的思想: :每次從剩下的數(shù)中選擇每次從剩下的數(shù)中選擇最小的數(shù)最小的數(shù)( (記住它的下標(biāo)記住它的下標(biāo)) )與這組數(shù)中第與這組數(shù)中第一個(gè)數(shù)交換,數(shù)的個(gè)數(shù)依次減少。一趟一個(gè)數(shù)交換,數(shù)的個(gè)數(shù)依次減少。一趟排序完成后最前面的數(shù)最小。共進(jìn)展排序完成后最前面的數(shù)最小。共進(jìn)展n-1n-1趟排序。趟排序。 i=0;k=0;/假設(shè)從假設(shè)從a0an-1的數(shù)中的數(shù)中a0最小最小for(j=i+1; jn; j+) if(ajak) k=j;temp=a0; a0=ak; ak=temp; i=1
13、;k=1;/假設(shè)從假設(shè)從a1an-1的數(shù)中的數(shù)中a1最小最小for(j=i+1; jn; j+) if(ajak) k=j;temp=a1; a1=ak; ak=temp; i=1;k=1;/假設(shè)從假設(shè)從a1an-1的數(shù)中的數(shù)中a1最小最小for(j=i+1; jn; j+) if(ajak) k=j;temp=a1; a1=ak; ak=temp; for(i=0; in-1; i+) k=i;/假設(shè)從假設(shè)從aian-1的數(shù)中的數(shù)中ai最小最小 for(j=i+1; jn; j+) if(ajak) k=j; temp=ai; ai=ak; ak=temp; 冒泡排序冒泡排序冒泡排序的思想是
14、:冒泡排序的思想是: 依次比較相鄰的兩個(gè)數(shù),假設(shè)前面依次比較相鄰的兩個(gè)數(shù),假設(shè)前面的數(shù)大就相互交換,這樣小的數(shù)就會(huì)的數(shù)大就相互交換,這樣小的數(shù)就會(huì)向氣泡一樣往前冒。一趟排序完成后向氣泡一樣往前冒。一趟排序完成后最后一個(gè)數(shù)最大。共進(jìn)展最后一個(gè)數(shù)最大。共進(jìn)展n-1n-1趟排序。趟排序。 0 1 2 3 4 50 1 2 3 4 50 1 2 3 4 50 1 2 3 4 50 1 2 3 4 50 1 2 3 4 5一一趟趟排排序序結(jié)結(jié)果果for(j=0; jaj+1) temp=aj; aj=aj+1; aj+1=temp; 從從a0a0到到an-1,an-1,依次比較相鄰的兩個(gè)數(shù)依次比較相鄰的
15、兩個(gè)數(shù)ajaj和和aj+1 aj+1 (j(j取取0 0到到n-2),n-2),假設(shè)前一個(gè)數(shù)大那么交換假設(shè)前一個(gè)數(shù)大那么交換. .使使an-1an-1的值最大的值最大for(j=0; jaj+1) temp=aj; aj=aj+1; aj+1=temp; for(j=0; jaj+1) temp=aj; aj=aj+1; aj+1=temp; for(j=0; jaj+1) temp=aj; aj=aj+1; aj+1=temp; for(i=1; in;i+) for(j=0; jaj+1) temp=aj; aj=aj+1; aj+1=temp; 交換排序for (i=0; in-1; i
16、+) for(j=i+1; jaj) temp=ai; ai=aj; aj=temp; #define n 10int an;選擇排序選擇排序for(i=0; in-1; i+) k=i;/假設(shè)從假設(shè)從ai an-1的數(shù)中的數(shù)中ai最小最小 for(j=i+1; jn; j+) if(ajak) k=j; temp=ai; ai=ak; ak=temp; 97 5 7 4 0 8 66 23 55 9 #define n 10int main( ) int i,j,k; int t,an; for(i=0; in; i+) scanf(%d,&ai); for(i=0; in-1; i
17、+) k=i; /假設(shè)從假設(shè)從ai an-1的數(shù)中的數(shù)中ai最小最小 for(j=i+1; jn; j+) if(ajak) k=j; temp=ai; ai=ak; ak=temp; for(i=0; in; i+) printf(“%d ,ai); if(k!=i) 冒泡排序冒泡排序#define n 10int main( ) int i,j; int temp,an; for(i=0; in; i+) scanf(%d,&ai); for(i=1; in;i+) for(j=0; jaj+1) temp=aj; aj=aj+1;aj+1=temp; for(i=0; ixlef
18、trightmiddle關(guān)系關(guān)系084amiddlex查找x=9查找x=6031amiddlex000amiddlex10#define n 10#define n 10int main( ) int main( ) int an; int an; int i,left,right, mid; int x; int i,left,right, mid; int x; for(i=0; in; i+) scanf(%d,&ai); for(i=0; i amid) if (x amid) left = mid + 1; left = mid + 1; else if (x amid) e
19、lse if (x amid) right = mid - 1; right = mid - 1; else break; else break; if( )if( ) printf(not found! printf(not found!; else printf(%d is %d, ,x); else printf(%d is %d, ,x);#define n 10#define n 10int main( ) int main( ) int an; int an; int i,left,right, mid; int x; int i,left,right, mid; int x; f
20、or(i=0; in; i+) scanf(%d,&ai); for(i=0; in; i+) scanf(%d,&ai); printf(want found: );scanf(%d,&x); printf(want found: );scanf(%d,&x); left = 0 ; right= n-1 ; left = 0 ; right= n-1 ; while ( left=right ) while ( left amid) if (x amid) left = mid + 1; left = mid + 1; else if (x amid) el
21、se if (x right )if( leftright ) printf(not found! printf(not found!; else printf(%d is %d,mid ,x); else printf(%d is %d,mid ,x);有一個(gè)有一個(gè)3*4的矩陣的矩陣,求值最大的元素及其所在的行號(hào)、列號(hào)求值最大的元素及其所在的行號(hào)、列號(hào)#define M 3#define N 4int main( )int max, i , j , row,col; int aMN; for(i=0; iM; i+) for(j=0; jN; j+) scanf(%d,&aij);
22、max=a00; row=col=0; for(i=0; iM; i+) for(j=0; jmax) max=aij; row=i; col=j;printf(max=%d,row=%d,col=%dn,max,row,col);輸入輸入40個(gè)學(xué)生的學(xué)號(hào)和成果,輸出最高分學(xué)生的信息個(gè)學(xué)生的學(xué)號(hào)和成果,輸出最高分學(xué)生的信息#define ARR_SIZE 40int main() float scoreARR_SIZE, maxScore; int numARR_SIZE,maxNum;int n, i;printf(Please enter total number:);scanf(%d,
23、&n); printf(Please enter the number and the score:n); for (i=0; in; i+) scanf(%d%f, &numi, &scorei); maxScore = score0;maxNum = num0; for (i=1; i maxScore) maxScore = scorei; maxNum = numi; printf(maxScore = %.0f, maxNum = %dn, maxScore,maxNum); 5.4 字符串字符串char c110;static char c210;00000
24、00000char c310=I,a,m,h,a,p,p,y;Iamhappy73 32 97 109 32 104 97 112 112121復(fù)習(xí):字符數(shù)組的定義與初始化復(fù)習(xí):字符數(shù)組的定義與初始化#define N 10int main( ) int i, j, k; char aN,t; printf(input 10 characters:); for(i=0; iN; i+) scanf(%c,&ai); for(i=0; iN-1; i+) k= i; /假設(shè)從假設(shè)從aiaN-1的字符中的字符中ai最小最小 for(j=i+1; jN; j+) if(ajak) k = j
25、; if(k!=i) t=ak; ak=ai; ai= t; printf(the sorted number:n); for(i=0 iN; i+) printf(%c,ai); printf(n); return 0;一、字符串一、字符串 C言語中沒有專門的字符串類型,言語中沒有專門的字符串類型, 而是用字符數(shù)組來表示而是用字符數(shù)組來表示 但字符數(shù)組的長(zhǎng)度與字符串的長(zhǎng)度不同但字符數(shù)組的長(zhǎng)度與字符串的長(zhǎng)度不同 字符數(shù)組的長(zhǎng)度在定義該數(shù)組時(shí)就指定了字符數(shù)組的長(zhǎng)度在定義該數(shù)組時(shí)就指定了 而字符串的長(zhǎng)度是可以變化的而字符串的長(zhǎng)度是可以變化的 以以0表示字符串的終了表示字符串的終了(空字符空字符)
26、一個(gè)字符串應(yīng)存放在比它的長(zhǎng)度多一個(gè)字符串應(yīng)存放在比它的長(zhǎng)度多1的字符數(shù)組中的字符數(shù)組中C C中為何需求空字符中為何需求空字符? ?可以這樣初始化存放字符串的字符數(shù)組:可以這樣初始化存放字符串的字符數(shù)組:char ch =Iamhappy;char ch = Iamhappy;char st10=I, t, , i, s, 0;表示字符串表示字符串It isItis00000Iamhappy0chch的長(zhǎng)度為的長(zhǎng)度為1111字符串的長(zhǎng)度為字符串的長(zhǎng)度為1010Beijing000表示一個(gè)字符串表示一個(gè)字符串BeijingBeijing可以定義可以定義: : char onecity10;/ ch
27、ar onecity10;/數(shù)組長(zhǎng)度至少為數(shù)組長(zhǎng)度至少為8 8Beijing000Shanghai00Nanjing000Dalian0000Shenzhen00Guangzhou0應(yīng)該定義應(yīng)該定義: : char city610; char city610;表示多個(gè)字符串:表示多個(gè)字符串:BeijingBeijing、ShanghaiShanghai、NanjingNanjing、DalianDalian、Shenzhen Shenzhen 、GuangzhouGuangzhou留意:留意:并沒有規(guī)定字符數(shù)組并沒有規(guī)定字符數(shù)組必需以必需以0終了終了!Iam0aptmc( (表示字符串表示字符
28、串 I Iamam)IambaptmcIambaptm0字字符符數(shù)數(shù)組組字字符符串串二、字符串的輸入與輸出二、字符串的輸入與輸出1輸入和輸出方式輸入和輸出方式字符數(shù)組的輸入輸出字符數(shù)組的輸入輸出 for(i=0; iN; i+) scanf(%c, &chi); for(i=0; iN; i+) printf(%c, chi );字符串的輸入輸出字符串的輸入輸出 scanf(%s,ch); printf(%s,ch);0不能以不能以%c的格式輸入的格式輸入2輸入輸入/出字符串時(shí)留意:出字符串時(shí)留意:輸入輸入/出字符不包括出字符不包括0按實(shí)踐長(zhǎng)度輸入按實(shí)踐長(zhǎng)度輸入/出字符串出字符串按按%
29、s格式輸入時(shí),格式輸入時(shí), 以以或或CR作為字符串的終了符作為字符串的終了符數(shù)組名表示數(shù)組的首地址數(shù)組名表示數(shù)組的首地址char str110= Book;char str210= Try it!;printf(%s,str1);printf(%s,str2);char str110,str210,str310;scanf(%s%s%s,str1,str2,str3);輸入:輸入:Howareyou?scanf(%s,str1);輸入:輸入:Howareyou?三、字符串處置函數(shù)三、字符串處置函數(shù)必需運(yùn)用必需運(yùn)用#include 1puts(字符串字符串)作用:將一個(gè)字符串輸出到屏幕作用:將一
30、個(gè)字符串輸出到屏幕 char str = This is a book!; puts(str); puts(Press a key!);2gets(字符數(shù)組字符數(shù)組)作用:從鍵盤輸入一個(gè)字符串到字符數(shù)組作用:從鍵盤輸入一個(gè)字符串到字符數(shù)組 char str20; gets(str);Youare0 str1:astudent0str2:Y o ua r eas t u d e n t 0 .str1:留意留意: :字符數(shù)組字符數(shù)組1 1要足夠大要足夠大留意留意:這是給字符數(shù)組一次性賦值的獨(dú)一方法這是給字符數(shù)組一次性賦值的獨(dú)一方法 字符數(shù)組字符數(shù)組1要足夠大要足夠大 不能運(yùn)用以下賦值運(yùn)算不能運(yùn)用
31、以下賦值運(yùn)算: str1= China;只能用只能用: str10= C; str11= h; China0China0Cgina0Ciina0對(duì)一個(gè)字符串進(jìn)展操作對(duì)一個(gè)字符串進(jìn)展操作 char one80; gets(one); for(i=0; onei!=0; i+) 或:或:while(getchar()!=n) 對(duì)多個(gè)字符串進(jìn)展操作對(duì)多個(gè)字符串進(jìn)展操作 char many1080; for(i=0; i10; i+) gets(manyi);for(i=0; i80; i+) scanf(%c,&onei);用于串輸入是錯(cuò)的用于串輸入是錯(cuò)的有有10個(gè)字符串個(gè)字符串,找出其中的
32、最大者找出其中的最大者#define N 10#include int main( )char string30, strN30; int i; for(i=0; iN; i+) gets(stri); strcpy(string,str0); for(i=1; i0) strcpy(string,stri); printf(The largest string is:); puts(string); return 0;#define N 10int main( ) int i, j, k; char aN80,t80; printf(input 10 characters:); for(i=
33、0; iN; i+) gets(ai); for(i=0; iN-1; i+) k= i; /假設(shè)從假設(shè)從ai aN-1的字符中的字符中ai最小最小 for(j=i+1; jN; j+) if(strcmp(aj,ak)0) k = j; if(k!=i) strcpy(t,ak); strcpy(ak,ai); strcpy(ai, t); printf(the sorted strings:n); for(i=0 iN; i+) puts(ai); printf(n); return 0;N N個(gè)字符串排序個(gè)字符串排序輸入一行字符輸入一行字符, ,統(tǒng)計(jì)其中有多少個(gè)單詞統(tǒng)計(jì)其中有多少個(gè)單詞.
34、 .單詞之間用空格隔開單詞之間用空格隔開輸入一行字符輸入一行字符從第一個(gè)字符到最后一個(gè)字符從第一個(gè)字符到最后一個(gè)字符這個(gè)字符是空格這個(gè)字符是空格? ?本字符是空格本字符是空格前一個(gè)字符能否是空格前一個(gè)字符能否是空格? ?本字符是非空格本字符是非空格單詞個(gè)單詞個(gè)數(shù)加數(shù)加1 1單詞個(gè)數(shù)初始化為單詞個(gè)數(shù)初始化為0 0是是是是輸出單詞個(gè)數(shù)輸出單詞個(gè)數(shù)否否否否#include int main( ) int i, num=0, word=0; char string81; gets(string); for(i=0; stringi!=0; i+) if (stringi= ) word=0; else
35、 word=1; if(word=0) word=1; num+; printf(“There are %d word in the linen,num); return 0;char password10;j=0;while(passwordj=getch()!=r) putch(*);j+; /輸入口令passwordj=0;if(!strcmp(password,12345) /驗(yàn)證口令printf(口令正確);239239房間房間輕輕松松小小屋屋住的人住的人值值可以發(fā)生變化可以發(fā)生變化房間地址房間地址指針指針房間名房間名變量名變量名編程時(shí)定義編程時(shí)定義編譯時(shí)指定地址編譯時(shí)指定地址一、什
36、么是指針一、什么是指針? ? 地址稱為指針地址稱為指針int sum; int sum; sum=7; sum=7; 變量名為變量名為sum,sum,sumsum有確定的地址有確定的地址&sum,&sum,sumsum值為值為7 7經(jīng)過經(jīng)過sumsum和和&sum&sum都可以訪問到都可以訪問到7 7直接訪問、間接訪問直接訪問、間接訪問地址空間的大小有哪些房間號(hào)和變量的地址空間的大小有哪些房間號(hào)和變量的詳細(xì)地址分別由硬件系統(tǒng)和編譯系統(tǒng)決議詳細(xì)地址分別由硬件系統(tǒng)和編譯系統(tǒng)決議二、指針變量二、指針變量 專門用于存放地址的變量稱為指針變量專門用于存放地址的變量稱為指針
37、變量int i;i=10; 假設(shè)假設(shè)&i為為2000;定義定義: int *i_point;i_point=&i;int i;i=10; 假設(shè)假設(shè)&i為為2000;定義定義: int *i_point;i_point=&i;用用* *i_pointi_point表示表示i_pointi_point所指向的存儲(chǔ)單元的值所指向的存儲(chǔ)單元的值即即i i的值的值4 4個(gè)字節(jié)個(gè)字節(jié), ,可以放可以放intint、 floatfloat類型數(shù)據(jù)類型數(shù)據(jù)8 8個(gè)字節(jié)個(gè)字節(jié), , 放放doubledouble類型數(shù)據(jù)類型數(shù)據(jù)1 1個(gè)字節(jié)個(gè)字節(jié), , 放放charchar類型數(shù)據(jù)
38、類型數(shù)據(jù)首地址只需一個(gè),存儲(chǔ)空間大小和存儲(chǔ)方式?首地址只需一個(gè),存儲(chǔ)空間大小和存儲(chǔ)方式?定義指針變量也需求指出指向數(shù)據(jù)的類型定義指針變量也需求指出指向數(shù)據(jù)的類型指針變量定義:指針變量定義: 類型類型 *標(biāo)識(shí)符標(biāo)識(shí)符 指針變量的定義與初始化指針變量的定義與初始化例例: int i,j; float x; int *pointer_i, *pointer_j; float *pf;在程序中可以賦值:在程序中可以賦值: pointer_i=&i; pointer_j=&j; pf=&x;初始化:初始化: int a,*p=&a ; float x,*pf=&x
39、;ipointer_ijpointer_j指針變量定義:指針變量定義: 類型類型 *標(biāo)識(shí)符標(biāo)識(shí)符 指針變量的運(yùn)用指針變量的運(yùn)用int main( )int a,b; int *point_1,*point_2; a=100; b=10; point_1=&a; point_2=&b; printf(%d,%dn,a,b); printf(%d,%dn,*point_1,*point_2); return 0;point_1=&a不能短少,不能短少,否那么否那么point_1是個(gè)懸空的指是個(gè)懸空的指針針比較比較:p1=&a;*p1=a;*p1=&a; in
40、t a,b; int *p1,*p2; a=100; b=10; p1=&a; p2=&b;比較比較:a=5;*p1=5;p1=5;int main()int *p1,*p2,*p,a,b; scanf(%d,%d,&a,&b); p1=&a; p2=&b; if (ab) p=p1; p1=p2; p2=p; printf(a=%d,b=%dn,a,b); printf(max=%d,min=%dn,*p1,*p2); return 0;閱讀程序閱讀程序ab35p1p2數(shù)組的首地址數(shù)組的首地址-數(shù)組的指針數(shù)組的指針數(shù)組元素的地址數(shù)組元素的地址-
41、數(shù)組元素的指針數(shù)組元素的指針三、數(shù)組與指針三、數(shù)組與指針int a10; int *p,*s,i; p=&a0; s=&a5; &a0與與a等價(jià)等價(jià)aint b34=1,2,3,4,5,6,7,8,9,10,11,12;int a6=0,11,22,33,44,55;01122334455100104108112116120值值地址地址a1231 4567891 101112200204208212216220224228232236240244b數(shù)數(shù)組組的的內(nèi)內(nèi)存存組組織織假設(shè)假設(shè)p=&a0或或p=a p指向數(shù)組指向數(shù)組a的第零個(gè)元素的第零個(gè)元素a0 C言語規(guī)
42、定:言語規(guī)定: p+i表示數(shù)組第表示數(shù)組第i個(gè)元素個(gè)元素ai的地址,值相當(dāng)于的地址,值相當(dāng)于 a+i*sizeof(a0)因此:因此: 指針指針p+i、a+i均指向均指向ai *(a+i) 、*(p+i) 就是就是ai援用數(shù)組元素的方法援用數(shù)組元素的方法1下標(biāo)法下標(biāo)法 ai2指針法:指針法:pi、*(a+i)、*(p+i)留意:留意:pi與與ai的區(qū)別的區(qū)別int a10、p=a不能少不能少下下標(biāo)標(biāo)法法指指針針法法b3 5 9 7 8 10 7 2 1 4 3 6 int b34;b00b00是第是第0 0個(gè)元素個(gè)元素b01b01是第是第1 1個(gè)元素個(gè)元素b02b02是第是第2 2個(gè)元素個(gè)元素
43、b03b03是第是第3 3個(gè)元素個(gè)元素b10b10是第是第4 4個(gè)元素個(gè)元素b11b11是第是第5 5個(gè)元素個(gè)元素b12b12是第是第6 6個(gè)元素個(gè)元素b13b13是第是第7 7個(gè)元素個(gè)元素b20b20是第是第8 8個(gè)元素個(gè)元素b21b21是第是第9 9個(gè)元素個(gè)元素b22b22是第是第1010個(gè)元素個(gè)元素b23b23是第是第1111個(gè)元素個(gè)元素bijbij是第是第? ?個(gè)元素個(gè)元素i*4+j下標(biāo)法下標(biāo)法指針法指針法int main()int main() int b34,c43; int i,j; int b34,c43; int i,j; int int * *p,p,* *s;s; p=&b00;s=&c00; p=&b00;s=&c00; for(i=0; i3; i+) for(i=0; i3; i+) for(j=0; j4; j+) for(j=0; j4; j+) scanf(“%d scanf(“%d,p+i,p+i* *4+j);4+j); for(i=0; i3; i+) for(i=0; i3; i+) for(j=0; j4; j+) for(j=0; j4; j+) *
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版信用證抵押貸款業(yè)務(wù)合作協(xié)議范本3篇
- 2025版土方工程居間代理服務(wù)合同范本下載33篇
- 2025年度股權(quán)分割與繼承處理協(xié)議
- 2025年度房地產(chǎn)合作終止協(xié)議書
- 2025年度旅游文化股權(quán)合作協(xié)議書
- 二零二五年度木工機(jī)械操作人員勞務(wù)租賃合同4篇
- 2025年度牧業(yè)產(chǎn)品品牌推廣與營(yíng)銷合同4篇
- 二零二五年度火鍋餐飲品牌區(qū)域代理授權(quán)協(xié)議
- 二零二五年度餐飲店員工激勵(lì)機(jī)制與績(jī)效考核合同
- 二零二五版環(huán)保技術(shù)入股合作協(xié)議書3篇
- 并購指南(如何發(fā)現(xiàn)好公司)
- DL-T-1642-2016環(huán)形混凝土電桿用腳扣
- 平安產(chǎn)險(xiǎn)陜西省地方財(cái)政生豬價(jià)格保險(xiǎn)條款
- 銅礦成礦作用與地質(zhì)環(huán)境分析
- 30題紀(jì)檢監(jiān)察位崗位常見面試問題含HR問題考察點(diǎn)及參考回答
- 詢價(jià)函模板(非常詳盡)
- 《AI營(yíng)銷畫布:數(shù)字化營(yíng)銷的落地與實(shí)戰(zhàn)》
- 麻醉藥品、精神藥品、放射性藥品、醫(yī)療用毒性藥品及藥品類易制毒化學(xué)品等特殊管理藥品的使用與管理規(guī)章制度
- 乘務(wù)培訓(xùn)4有限時(shí)間水上迫降
- 2023年低年級(jí)寫話教學(xué)評(píng)語方法(五篇)
- DB22T 1655-2012結(jié)直腸外科術(shù)前腸道準(zhǔn)備技術(shù)要求
評(píng)論
0/150
提交評(píng)論