函數
1.函數定義的一般形式:
無參數函數: 類型標識符 函數名()
{ 說明部分;
語句;}
注:無返回值,可不寫類型標識符。
有參數函數:類型標識符 函數名(形式參數列表)
形式參數說明
{ 說明部分;
語句;}
注:類型標識符指定函數返回值的類型,無類型標識符時默認為整型數。
空 函 數:類型標識符函數名()
{ }
2.函數的調用
一般調用形式:函數名(實際參數列表)
函數調用方式:把函數調用作為一個語句,完成某種操作,無需返回值,
如:printstr();
函數出現在表達式中,要求有返回值參與運算,如:c=2*max(a,b);
函數調用作為另一個函數的實參,如:printf(“%d”,max(a,b));
說明:①被調用函數必須存在。
②使用庫函數,一般在文件開頭用 #include命令將有關函數信息包含進來。
③自定義函數應與主調函數在一個文件中,若自定義函數在主調函數后,主調函 數中應加以說明。
函數的嵌套調用:C語言中不能嵌套定義函數,但可以嵌套調用函數,即在一個函數中調用另一個函數。
函數的遞歸調用:在一個函數中直接或間接調用該函數本身。
3.函數的參數
函數的參數可以是變量,也可以是數組元素、數組名或指針變量。
4.內部函數和外部函數、局部變量和全局變量、動態存儲變量與靜態存儲變量。
第九章 編譯預處理
1.宏定義:用一個指定的標識符來代表一個字符串。
不帶參數的宏定義:#define 標識符字符串
帶參數的宏定義: #define 宏名(參數表) 字符串
終止宏定義的作用域:#undef
2.文件包含處理:一個源文件將另一個源文件包含進來。
形式:#include“文件名”
3.條件編譯:對源程序中的一部分指定編譯條件。
第十章 指針
1.指針:是一個變量的地址,即分配給一個變量的內存起始地址。
指針變量:是存放指針(另一變量地址)的變量。
指針變量的定義形式: 類型標識符 *標識符
2.指針變量的引用
例如:int x=5,y,z,a[]={1,2,3,4};
int *px,*py;
px=x;py=a;
*px=5;
z=*px;
3.指針與函數參數
例:交換兩個變量內容的程序
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=%dtb=%dn”,a,b);
swap(a,b);
printf(“a=%dtb=%dn”,a,b);
}
通過地址(指針)實現被調用函數直接修改調用函數中變量的內容。
4. 指針和數組
數組的指針是指數組的起始地址,任何能用數組下標完成的操作都能由指針來完成。通過指針引用數組元素,例:若有int a[],*pa;pa=a;則:a[i]=*(pa+i)=*(a+i)
5.多維數組的指針
例:設有一個二維數組a[3][4],則:數組名a是數組的首地址,a+i與a[i]等價,是第i行的首地址,a[i]+j表示第i行第j列的地址。
若有:int *p=a;
則:數組中任一元素地址可表示為*(p+i)+j,或為p+i*m+j。(m列數)
指向由m個元素組成的一維數組的指針變量,例:int(*p)[m]
6.字符串與指針
例:若有:char *s;s="I am a string" 表示s指向字符串的首地址,s+i表示第i個字符的地址。輸出時從指針所指地址開始直到字符串結束標記(‘0’)為止。
7.指針數組和多級指針
凡是可以用多維數組處理的問題,都可以用指針數組來解決,但兩者有所區別。
指針數組定義形式:類型標識符 數組名[長度說明]如:int *p[4];
指針數組的初始化:允許在定義時初始化,
如:static char *a[]={"ab","cde","fghi"};
指針數組的引用:a+i表示第i個字符串。
多級指針定義形式:類型標識符 **指針變量名; 如:char **p;
多級指針的初始化:p=a;
多級指針的引用:p+i表示第i個字符串,p++表示下一個字符串,*(p+i)+j表示第i個字符串中第j個字符的地址。
8.函數的指針
定義形式:數據類型標識符 (*指針變量名)(); 如:int (*f)();
初 始 化:int max(x,y);f=max;
用指針變量調用函數:c=(*f)(a,b);
9.返回指針值的函數
定義形式:類型標識符函數名(形參列表); 如:int *a(x,y);
10.指針數組
指針數組的元素均為指針類型數據。
定義形式:類型標識符 *數組名[數組長度]; 如:int *p[4];
11.指向指針的指針
定義形式:類型標識符 **標識符; 如:char **p;
12、有關指針的數據類型
變量int iint *pint **p
數組int a[n]int (*p)[n]int *p[n]
函數int f()int (*p)()int *p()
第十一章 結構體
結構體是一種類型,是包含若干個類型不同的數據項組成的組合體。
1、定義結構體類型
struct 結構體名
{ 成員表列 };
2、定義結構體類型的變量的三種方法
(1) 先聲明結構體類型再定義變量名
例:struct student{ 成員表列 };
struct student student1,student2;
(2) 聲明結構體類型的同時定義變量名
struct 結構體名
{
成員表列
}變量名表列;
(3) 直接定義結構體類型變量
struct
{
成員表列
}變量名表列;
3、結構體變量的引用及初始化
不能將結構體變量作為一個整體進行輸入和輸出,只能對結構體變量中的各個成員分別進行輸入和輸出。引用結構體變量中各個成員的方式:結構體變量名.成員名
結構體變量可以在定義時指定初始值,也可以先定義,而后給每個成員賦值。
4、結構體數組
結構體數組中每個元素都是同一個結構體類型的數據,它們都分別包括各個成員項。
例:定義struct student stu[3];
5、指針與結構體
一個結構體類型的指針是所指結構體變量所占內存的起始地址。
若有:struct student stu,*p;p=stu;
以下三種形式等價: stu.成員名 等價于 (*p).成員名 等價于 p->成員名
6、用指針處理鏈表
(1) 建立鏈表的函數: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) 輸出鏈表的函數:p.300 例11.9
void plink(struct student *head) /*更具通用性*/
{ struct student *p;
p=head;
while(p!=NULL)
{ printf("num=%ld, score=%5.2fn",
p->num, p->score);
p=p->next;
}
return;
}
(3) 對鏈表的刪除操作:p.301 例11.10
struct student *del(struct student *head, long n)
{ struct student *p1, *p2; /*↑n:要刪除學號*/
p1=head;
if(p1->num==n) head=p1->next; /*刪除首節點*/
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); /*釋放被刪除節點的存儲區*/
return(head); /*返回頭指針*/
}
(4) 對鏈表的插入操作:p.303 例11.11
第十二章 位運算
1、 按位“與”運算符():參與運算的兩個數據,按二進制位進行“與”的運算。
2、 按位“或”運算符(|):參與運算的兩個數據,按二進制位進行“或”的運算。
3、 按位“異或”運算符(^):參與運算的兩個二進制位同號為0(假),異號為1(真)。
4、 “取反”運算符(~):對二進制位按位取反。
聲明:
(一)由于考試政策等各方面情況的不斷調整與變化,本網站所提供的考試信息僅供參考,請以權威部門公布的正式信息為準。
(二)本網站在文章內容來源出處標注為其他平臺的稿件均為轉載稿,免費轉載出于非商業性學習目的,版權歸原作者所有。如您對內容、版權等問題存在異議請與本站聯系,我們會及時進行處理解決。
相關推薦
2023年10月浙江自考中國古代文學史(一)復習資料:陳子昂與張若虛
09-062023年10月浙江自考傳播學概論復習資料:反饋
08-292023年4月浙江自考高級英語課文串講筆記四
01-062023年10月浙江自考傳播學概論復習資料:傳播技巧
08-302023年浙江自考水產繁殖育苗技術復習資料:論述題
02-272022年浙江自考《高級英語》復習資料(8)
09-282022年浙江自考英語(二)語法及翻譯復習資料(8)
10-092022年浙江自考俄羅斯小說文體論復習資料第五章
10-082022年浙江自考《高級英語》復習資料(4)
09-302023年4月浙江自考英語(二)串講筆記:lesson14
02-10