goto語句:終止程序在某些深度嵌套的結(jié)構(gòu)的處理過程(可以跳轉(zhuǎn))
創(chuàng)新互聯(lián)從2013年成立,先為羅湖等服務(wù)建站,羅湖等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為羅湖企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。1.代碼示例:
#includeint main()
{again:
printf("hello\n");
printf("hello\n");
printf("hihi\n");
goto again;
return 0;
}
程序運(yùn)行起來后,倒計(jì)時(shí)60秒關(guān)機(jī),如果輸入好好學(xué)習(xí)就可以取消關(guān)機(jī)。
使用命令行關(guān)機(jī)
shutdown -s -t 關(guān)機(jī)
shutdown -a 取消關(guān)機(jī)
#include#include#includeint main()
{char arr[20] = {0 };
system("shutdown - s - t 60");
again:
printf("請(qǐng)注意,你的電腦將在一分鐘內(nèi)關(guān)機(jī),如果輸入:好好學(xué)習(xí),就取消關(guān)機(jī)\n");
scanf("%s", arr);
if (strcmp(arr, "好好學(xué)習(xí)")==0)
{system("shutdown - a");
}
else
{goto again;
}
return 0;
}
C語言strcmp()函數(shù):比較兩個(gè)字符串。兩個(gè)字符串相等時(shí)返回0.
所以可以寫成strcmp(arr, “好好學(xué)習(xí)”) == 0
(1).函數(shù)就是 C 語言的模塊,一塊一塊的,有較強(qiáng)的獨(dú)立性,可以相互調(diào)用,換句話說,C 語言中,一個(gè)函數(shù)里面可以調(diào)用 n 個(gè)函數(shù),即大函數(shù)調(diào)用小函數(shù),小函數(shù)又調(diào)用“小小”函數(shù)。這就是結(jié)構(gòu)化程序設(shè)計(jì),所以面向過程的語言又叫結(jié)構(gòu)化語言。
(2).函數(shù)就是一系列 C 語句的集合,能完成某個(gè)特定的功能。需要該功能的時(shí)候直接調(diào)用該函數(shù)即可,不用每次都堆疊代碼。需要修改該功能時(shí),也只需要修改和維護(hù)這一個(gè)函數(shù)即可。
2.函數(shù)的分類
(1).庫函數(shù):庫函數(shù)(Library function)是把函數(shù)放到庫里,供別人使用的一種方式。一般是指編譯器提供的可在c源程序中調(diào)用的函數(shù)??煞譃閮深悾活愂莄語言標(biāo)準(zhǔn)規(guī)定的庫函數(shù),一類是編譯器特定的庫函數(shù)。
(2).自定義函數(shù):自定義函數(shù)是程序員自己聲明和定義的,是程序員補(bǔ)充的工具,不管是現(xiàn)成工具的還是補(bǔ)充的工具,都是工具,對(duì)使用者來說都一樣,沒有區(qū)別。在C語言中,函數(shù)的調(diào)用非常靈活,可以獨(dú)占一行語句,也可以當(dāng)成常量賦值給變量,也可以當(dāng)成函數(shù)的參數(shù)。
(1)strcpy函數(shù):C 庫函數(shù)char *strcpy(char *dest, const char *src) 把src 所指向的字符串復(fù)制到dest(\0也可以拷貝)。 需要注意的是如果目標(biāo)數(shù)組dest 不夠大,而源字符串的長度又太長,可能會(huì)造成緩沖溢出的情況。
#include#include#includeint main()
{char str1[] = "Sample string";
char str2[40];
char str3[40];
strcpy(str2, str1);
strcpy(str3, "copy successful");
printf("str1:%s\nstr2:%s\nstr3:%s\n", str1, str2, str3);
return 0;
}
(2)memset函數(shù):memset 函數(shù)是內(nèi)存賦值函數(shù),用來給某一塊內(nèi)存空間進(jìn)行賦值的。其原型是:voidmemset(void_Dst, int _Val, size_t _Size)
_Dst是目標(biāo)起始地址,_Val是要賦的值,_Size是要賦值的字節(jié)數(shù)。
#include#includeint main()
{char str[] = "hello world";
memset(str, 'x', 5);
printf("%s\n", str);
return 0;
}
(1).找出兩個(gè)整數(shù)之間的大值
#includeint 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);
int m = get_max(a, b);//自定義函數(shù)
printf("%d\n", m);
return 0;
}
并不是說函數(shù)都有返回,有的不用返回可以寫成void get_max()
以上get_max就是一個(gè)自定義函數(shù)
(1).函數(shù)的實(shí)參:
函數(shù)被調(diào)用時(shí)給出的參數(shù)包含了實(shí)實(shí)在在的數(shù)據(jù),會(huì)被函數(shù)內(nèi)部的代碼使用,所以稱為實(shí)際參數(shù),簡稱實(shí)參。
實(shí)參可以是變量 常量 表達(dá)式 函數(shù)等;
#includeget_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);
//int m = get_max(a, b);//變量
//int m = get_max(a, 3);//常量
//int m = get_max(a, 2+3);//表達(dá)式
int m = get_max(a, get_max(4, 5));//函數(shù)
printf("%d\n", m);
return 0;
}
(2).函數(shù)的形參:
在函數(shù)定義中出現(xiàn)的參數(shù)可以看做是一個(gè)占位符,它沒有數(shù)據(jù),只能等到函數(shù)被調(diào)用時(shí)接收傳遞進(jìn)來的數(shù)據(jù),所以稱為形式參數(shù),簡稱形參。
形式參數(shù)當(dāng)函數(shù)調(diào)用完之后就自動(dòng)銷毀了
(3):示例:寫一個(gè)函數(shù)可以交換兩個(gè)整形的變量內(nèi)容
由圖片可知,最后a和b的值并沒有交換,這是為什么呢?
a,b是實(shí)參;x,y是形參形參是實(shí)參的一份臨時(shí)拷貝,對(duì)形參的修改是不會(huì)影響實(shí)參的
通過調(diào)試可以知道,當(dāng)a,b傳參過去給x,y但是x,y的地址和a,b并不相同,所以交換后交換的只是x,y的值對(duì)a,b并無影響
所以可以采用指針的方式*
6.函數(shù)的調(diào)用
(1).傳值調(diào)用:
傳值調(diào)用: 函數(shù)的形參和實(shí)參分別占有不同的內(nèi)存塊,對(duì)形參的修改不會(huì)影響實(shí)參
#includevoid Swap1(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);
Swap1(a, b);
printf("交換后:a=%d,b=%d\n", a, b);
return 0;
}
(2).傳址調(diào)用:
將實(shí)參的地址傳遞給函數(shù),在函數(shù)內(nèi)對(duì)形參進(jìn)行操作等同于對(duì)實(shí)參進(jìn)行相同的操作,在函數(shù)調(diào)用結(jié)束返回后,形參被釋放,實(shí)參的內(nèi)容是對(duì)形參進(jìn)行操作后的結(jié)果。
#includevoid Swap2(int* pa, int* pb)
{int tmp = *pa;
*pa = *pb;
*pb = tmp;
}
int main()
{int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
printf("交換前:a=%d,b=%d\n", a, b);
Swap2(&a, &b);
printf("交換后:a=%d,b=%d\n", a, b);
return 0;
}
(3).注意
下圖這種方式也是一種傳值方式,雖然地址傳過去是對(duì)的但是px,py交換的只是地址,a,b的值并無影響。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)頁名稱:C語言中的goto語句和函數(shù)(上)-創(chuàng)新互聯(lián)
本文來源:http://bm7419.com/article42/cdijhc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)公司、企業(yè)網(wǎng)站制作、外貿(mào)建站、營銷型網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容