C語言中的goto語句和函數(shù)(上)-創(chuàng)新互聯(lián)

學(xué)習(xí)目標(biāo):
  • 掌握 C 入門知識(shí)
  • 學(xué)習(xí)自律+1 +1 +1 +1…+1

學(xué)習(xí)內(nèi)容:
  1. goto語句
  2. 函數(shù):(1) 函數(shù)的參數(shù)(2) 函數(shù)的調(diào)用

一.goto語句

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;
}
  1. 用goto語句實(shí)現(xiàn)一個(gè)關(guān)機(jī)程序

程序運(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


二.掌握函數(shù)基本語法
  1. 函數(shù)是什么

(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. 庫函數(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. 自定義函數(shù)(有函數(shù)名 返回值類型和函數(shù)參數(shù))

(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ù)

(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的值并無影響。
在這里插入圖片描述


學(xué)習(xí)產(chǎn)出:
  • 技術(shù)筆記 2 遍
  • 技術(shù)博客 1 篇

你是否還在尋找穩(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)

外貿(mào)網(wǎng)站建設(shè)