掃描/長(zhǎng)按下面二維碼 |
掃描/長(zhǎng)按下面二維碼 |
考試吧提醒:下載自考萬(wàn)題庫(kù),立即進(jìn)入刷題模式>>
函數(shù)
1.函數(shù)定義的一般形式:
無(wú)參數(shù)函數(shù): 類型標(biāo)識(shí)符 函數(shù)名()
{ 說(shuō)明部分;
語(yǔ)句;}
注:無(wú)返回值,可不寫(xiě)類型標(biāo)識(shí)符。
有參數(shù)函數(shù):類型標(biāo)識(shí)符 函數(shù)名(形式參數(shù)列表)
形式參數(shù)說(shuō)明
{ 說(shuō)明部分;
語(yǔ)句;}
注:類型標(biāo)識(shí)符指定函數(shù)返回值的類型,無(wú)類型標(biāo)識(shí)符時(shí)默認(rèn)為整型數(shù)。
空 函 數(shù):類型標(biāo)識(shí)符函數(shù)名()
{ }
2.函數(shù)的調(diào)用
一般調(diào)用形式:函數(shù)名(實(shí)際參數(shù)列表)
函數(shù)調(diào)用方式:把函數(shù)調(diào)用作為一個(gè)語(yǔ)句,完成某種操作,無(wú)需返回值,
如:printstr();
函數(shù)出現(xiàn)在表達(dá)式中,要求有返回值參與運(yùn)算,如:c=2*max(a,b);
函數(shù)調(diào)用作為另一個(gè)函數(shù)的實(shí)參,如:printf(“%d”,max(a,b));
說(shuō)明:①被調(diào)用函數(shù)必須存在。
、谑褂脦(kù)函數(shù),一般在文件開(kāi)頭用 #include命令將有關(guān)函數(shù)信息包含進(jìn)來(lái)。
、圩远x函數(shù)應(yīng)與主調(diào)函數(shù)在一個(gè)文件中,若自定義函數(shù)在主調(diào)函數(shù)后,主調(diào)函 數(shù)中應(yīng)加以說(shuō)明。
函數(shù)的嵌套調(diào)用:C語(yǔ)言中不能嵌套定義函數(shù),但可以嵌套調(diào)用函數(shù),即在一個(gè)函數(shù)中調(diào)用另一個(gè)函數(shù)。
函數(shù)的遞歸調(diào)用:在一個(gè)函數(shù)中直接或間接調(diào)用該函數(shù)本身。
3.函數(shù)的參數(shù)
函數(shù)的參數(shù)可以是變量,也可以是數(shù)組元素、數(shù)組名或指針變量。
4.內(nèi)部函數(shù)和外部函數(shù)、局部變量和全局變量、動(dòng)態(tài)存儲(chǔ)變量與靜態(tài)存儲(chǔ)變量。
第九章 編譯預(yù)處理
1.宏定義:用一個(gè)指定的標(biāo)識(shí)符來(lái)代表一個(gè)字符串。
不帶參數(shù)的宏定義:#define 標(biāo)識(shí)符字符串
帶參數(shù)的宏定義: #define 宏名(參數(shù)表) 字符串
終止宏定義的作用域:#undef
2.文件包含處理:一個(gè)源文件將另一個(gè)源文件包含進(jìn)來(lái)。
形式:#include“文件名”
3.條件編譯:對(duì)源程序中的一部分指定編譯條件。
第十章 指針
1.指針:是一個(gè)變量的地址,即分配給一個(gè)變量的內(nèi)存起始地址。
指針變量:是存放指針(另一變量地址)的變量。
指針變量的定義形式: 類型標(biāo)識(shí)符 *標(biāo)識(shí)符
2.指針變量的引用
例如:int x=5,y,z,a[]={1,2,3,4};
int *px,*py;
px=&x;py=a;
*px=5;
z=*px;
3.指針與函數(shù)參數(shù)
例:交換兩個(gè)變量?jī)?nèi)容的程序
swap(int *px, int *py)
{ int temp;
temp=*px;
*px=*py;
*py=temp;
}
main()
{ int a,b;
scanf(“%d”,&a);scanf(“%d”.&b);
printf(“a=%d\tb=%d\n”,a,b);
swap(&a,&b);
printf(“a=%d\tb=%d\n”,a,b);
}
通過(guò)地址(指針)實(shí)現(xiàn)被調(diào)用函數(shù)直接修改調(diào)用函數(shù)中變量的內(nèi)容。
4. 指針和數(shù)組
數(shù)組的指針是指數(shù)組的起始地址,任何能用數(shù)組下標(biāo)完成的操作都能由指針來(lái)完成。通過(guò)指針引用數(shù)組元素,例:若有int a[],*pa;pa=a;則:a[i]=*(pa+i)=*(a+i)
5.多維數(shù)組的指針
例:設(shè)有一個(gè)二維數(shù)組a[3][4],則:數(shù)組名a是數(shù)組的首地址,a+i與a[i]等價(jià),是第i行的首地址,a[i]+j表示第i行第j列的地址。
若有:int *p=a;
則:數(shù)組中任一元素地址可表示為*(p+i)+j,或?yàn)閜+i*m+j。(m列數(shù))
指向由m個(gè)元素組成的一維數(shù)組的指針變量,例:int(*p)[m]
6.字符串與指針
例:若有:char *s;s="I am a string" 表示s指向字符串的首地址,s+i表示第i個(gè)字符的地址。輸出時(shí)從指針?biāo)傅刂烽_(kāi)始直到字符串結(jié)束標(biāo)記(‘\0’)為止。
7.指針數(shù)組和多級(jí)指針
凡是可以用多維數(shù)組處理的問(wèn)題,都可以用指針數(shù)組來(lái)解決,但兩者有所區(qū)別。
指針數(shù)組定義形式:類型標(biāo)識(shí)符 數(shù)組名[長(zhǎng)度說(shuō)明]如:int *p[4];
指針數(shù)組的初始化:允許在定義時(shí)初始化,
如:static char *a[]={"ab","cde","fghi"};
指針數(shù)組的引用:a+i表示第i個(gè)字符串。
多級(jí)指針定義形式:類型標(biāo)識(shí)符 **指針變量名; 如:char **p;
多級(jí)指針的初始化:p=a;
多級(jí)指針的引用:p+i表示第i個(gè)字符串,p++表示下一個(gè)字符串,*(p+i)+j表示第i個(gè)字符串中第j個(gè)字符的地址。
8.函數(shù)的指針
定義形式:數(shù)據(jù)類型標(biāo)識(shí)符 (*指針變量名)(); 如:int (*f)();
初 始 化:int max(x,y);f=max;
用指針變量調(diào)用函數(shù):c=(*f)(a,b);
9.返回指針值的函數(shù)
定義形式:類型標(biāo)識(shí)符函數(shù)名(形參列表); 如:int *a(x,y);
10.指針數(shù)組
指針數(shù)組的元素均為指針類型數(shù)據(jù)。
定義形式:類型標(biāo)識(shí)符 *數(shù)組名[數(shù)組長(zhǎng)度]; 如:int *p[4];
11.指向指針的指針
定義形式:類型標(biāo)識(shí)符 **標(biāo)識(shí)符; 如:char **p;
12、有關(guān)指針的數(shù)據(jù)類型
變量int iint *pint **p
數(shù)組int a[n]int (*p)[n]int *p[n]
函數(shù)int f()int (*p)()int *p()
第十一章 結(jié)構(gòu)體
結(jié)構(gòu)體是一種類型,是包含若干個(gè)類型不同的數(shù)據(jù)項(xiàng)組成的組合體。
1、定義結(jié)構(gòu)體類型
struct 結(jié)構(gòu)體名
{ 成員表列 };
2、定義結(jié)構(gòu)體類型的變量的三種方法
(1) 先聲明結(jié)構(gòu)體類型再定義變量名
例:struct student{ 成員表列 };
struct student student1,student2;
(2) 聲明結(jié)構(gòu)體類型的同時(shí)定義變量名
struct 結(jié)構(gòu)體名
{
成員表列
}變量名表列;
(3) 直接定義結(jié)構(gòu)體類型變量
struct
{
成員表列
}變量名表列;
3、結(jié)構(gòu)體變量的引用及初始化
不能將結(jié)構(gòu)體變量作為一個(gè)整體進(jìn)行輸入和輸出,只能對(duì)結(jié)構(gòu)體變量中的各個(gè)成員分別進(jìn)行輸入和輸出。引用結(jié)構(gòu)體變量中各個(gè)成員的方式:結(jié)構(gòu)體變量名.成員名
結(jié)構(gòu)體變量可以在定義時(shí)指定初始值,也可以先定義,而后給每個(gè)成員賦值。
4、結(jié)構(gòu)體數(shù)組
結(jié)構(gòu)體數(shù)組中每個(gè)元素都是同一個(gè)結(jié)構(gòu)體類型的數(shù)據(jù),它們都分別包括各個(gè)成員項(xiàng)。
例:定義struct student stu[3];
5、指針與結(jié)構(gòu)體
一個(gè)結(jié)構(gòu)體類型的指針是所指結(jié)構(gòu)體變量所占內(nèi)存的起始地址。
若有:struct student stu,*p;p=stu;
以下三種形式等價(jià): stu.成員名 等價(jià)于 (*p).成員名 等價(jià)于 p->成員名
6、用指針處理鏈表
(1) 建立鏈表的函數(shù):p.297 例11.8
struct student *creat( )
{ struct student *head, *p1, *p2;
int i, len;
len=sizeof(struct student);
for(i=1; i<=N; i++)
{ p1=(struct student *)malloc(len);
printf("Enter num,score:");
scanf("%ld,%f", &p1->num, &p1->score);
if(i==1) head=p2=p1;
else { p2->next=p1; p2=p1; }
if(i==N) p2->next=NULL;
}
return(head); /*返回鏈表頭指針*/
}
(2) 輸出鏈表的函數(shù):p.300 例11.9
void plink(struct student *head) /*更具通用性*/
{ struct student *p;
p=head;
while(p!=NULL)
{ printf("num=%ld, score=%5.2f\n",
p->num, p->score);
p=p->next;
}
return;
}
(3) 對(duì)鏈表的刪除操作:p.301 例11.10
struct student *del(struct student *head, long n)
{ struct student *p1, *p2; /*↑n:要?jiǎng)h除學(xué)號(hào)*/
p1=head;
if(p1->num==n) head=p1->next; /*刪除首節(jié)點(diǎn)*/
else
{ do { p2=p1; p1=p1->next;
}
while(p1!=NULL && p1->num!=n);
if(p1->num==n) p2->next=p1->next; /*找到*/
else printf("Not be found!\n"); /*未找到*/
}
free(p1); /*釋放被刪除節(jié)點(diǎn)的存儲(chǔ)區(qū)*/
return(head); /*返回頭指針*/
}
(4) 對(duì)鏈表的插入操作:p.303 例11.11
第十二章 位運(yùn)算
1、 按位“與”運(yùn)算符(&):參與運(yùn)算的兩個(gè)數(shù)據(jù),按二進(jìn)制位進(jìn)行“與”的運(yùn)算。
2、 按位“或”運(yùn)算符(|):參與運(yùn)算的兩個(gè)數(shù)據(jù),按二進(jìn)制位進(jìn)行“或”的運(yùn)算。
3、 按位“異或”運(yùn)算符(^):參與運(yùn)算的兩個(gè)二進(jìn)制位同號(hào)為0(假),異號(hào)為1(真)。
4、 “取反”運(yùn)算符(~):對(duì)二進(jìn)制位按位取反。
相關(guān)鏈接:
自考萬(wàn)題庫(kù):2017年自學(xué)考試每日一練大匯總
2017年自學(xué)考試特點(diǎn)分析、課程特點(diǎn)及復(fù)習(xí)技巧
2017年自學(xué)考試應(yīng)試:各種題型及答題技巧
2017年自學(xué)考試沖刺技巧:調(diào)整好心態(tài)不怯場(chǎng)