1.庫函數
2.自定義函數
為什么會有庫函數?(1) 我們知道在我們學習C語言編程的時候,總是在一個代碼編寫完成之后迫不及待的想知道結果,想 把這個結果打印到我們的屏幕上看看。這個時候我們會頻繁的使用一個功能:將信息按照一定的格式打印到屏幕上(printf)。
(2) 在編程的過程中我們會頻繁的做一些字符串的拷貝工作(strcpy)。
(3)在編程時,我們也計算,總是會計算n的k次方這樣的運算(pow)。
學習庫函數的文檔: https://cplusplus.com/reference/
網站:https://en.cppreference.com(英文版)
https://zh.cppreference.com(中文版)
程序:msdn(離線工具)
在msdn中搜索庫函數:
IO函數 (輸入輸出函數)
字符串操作函數 (strlen字符串長度等等)
字符操作函數(判斷字符大小寫等)
內存操作函數
時間/日期函數
數學函數
其他庫函數
二、參照文檔學習庫函數: (注意使用庫函數的時候要記得包含頭文件)1.Strcpy 把原指針指向的字符串拷貝到放到目標地指針的空間里面.
#include#includeint main() {
char arr1[] = "abcdef";
char arr2[20] = { 0 };
strcpy(arr2, arr1);//strcpy(目標空間必須夠大,所以arr2[]的長度要比arr1[]的長)把arr1里面內容拷貝放到arr2里面去
printf("%s\n", arr2);
}
注意:Strcpy是把源頭的數據放到目標空間里面去,并且把\0也放進去了(文檔里面也有體現)
2.Memset:把ptr后面num個字節設置成value值
//把helloworld前五個字符改為x
int main() {
char arr1[] = "hello world";
memset(arr1, 'x', 5);
printf("%s", arr1);
}
自定義函數和庫函數一樣,有函數名,返回值類型和函數參數。
但是不一樣的是這些都是我們自己來設計。這給程序員一個很大的發揮空間。
ret_type fun_name(para1, * )
{ statement;//語句項
}
//ret_type 返回類型
//fun_name 函數名
//para1 函數參數(可以沒有,有一個,有多個)
建議:先寫主函數,---理清怎么用,反推函數怎么去寫
1.計算兩個整數的大值int get_max(int x, int y) {
if (x >y)
return x;
else
return y;
}
int main() {
int a = 0;
int b = 0;
scanf("%d %d",&a,&b);
關于函數的命名
Max()
GetMax() --獲取大值(可以每個單詞的第一個大寫便于區分)
get_max()---獲取大值(可以在中間加一個_隔開)
int m = get_max(a, b);
printf("%d\n", m);
return 0;
}
在調用函數的時候真實傳遞給函數的參數叫實參
2.打印hehevoid print() { //函數的返回類型:如果寫的函數有明確的返回類型要寫出來,不需要返回,就在類型的地方寫上void
printf("hehe");
}
int main() {
print();
return 0;
}
3.寫一個函數可以交換兩個整型變量的內容
// 錯誤示范void Swap(int x,int y) {
int tmp = x;
x = y;
y = tmp;
}
int main() {
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
printf("交換前:a=%d b=%d\n", a, b);
Swap(a, b);
printf("交換后:a=%d b=%d\n", a, b);
return 0;
}
錯誤原因:
a變量的值是3,b變量的值是5;a,b確實將3,5傳給了x,y;但是即使通過tmp交換了x和y的值,可x,y的地址與a,b的地址可不對應,所以最后輸出的時候根本不會影響a,b的值(因為a,b的值一直都存放在a,b的地址里面沒有發生改變)
簡單說,因為在調用的時候形參x,y都有自己的地址.
規范回答:
實參傳遞給形參的時候,形參是實參的一份臨時拷貝,對形參的修改不會影響實參的
解決思路:用pa把地址關聯起來
需要返回值就用具體的例如int,不需要返回值的就寫void
//正確示范void swap2(int* pa, int* pb) {
int tmp = *pa;//相當于tmp=a;的操作
*pa=*pb; //相當于a=b;的操作
*pb=tmp; //相當于b=tmp;的操作
}
int main() {
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
printf("交換前:a=%d b=%d\n", a, b);
Swap(&a, &b);
printf("交換后:a=%d b=%d\n", a, b);
return 0;
}
當Swap函數內部想要改變它函數外部的變量的值的時候,需要傳地址;
不修改時只傳值即可.
5.實際參數:真實傳給函數的參數,叫實參。 實參可以是:常量、變量、表達式、函數等。 無論實參是何種類型的量,在進行函數調用時,它們都必須有確定的值,以便把這些值傳送給形參。
6.形式參數 : (如果沒有調用函數,就不會給形參分配空間)形式參數是指函數名后括號中的變量,因為形式參數只有在函數被調用的過程中才實例化
所以叫形式參數。形式參數當函數調用完成之后就自動銷毀了。因此形式參數只在函數中有 效。
函數的調用--------傳值調用 傳址調用
當創建tmp把px,py里面的值互換,px---0x0012ff44,py---0x0012ff40,但是這并不影響a,b的值.
你學到了嗎小伙伴們😜😜
如果對你有幫助的話,希望小伙伴們點個贊和關注一下哦~💗💗💗我也會繼續更新學習的內容,感謝友友們的支持!😚
你是否還在尋找穩定的海外服務器提供商?創新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧
文章標題:C語言函數詳解(看完必會)-創新互聯
路徑分享:http://vcdvsql.cn/article12/isedc.html
成都網站建設公司_創新互聯,為您提供移動網站建設、標簽優化、電子商務、品牌網站設計、ChatGPT、用戶體驗
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯