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