不在百度做推廣他會(huì)把你的網(wǎng)站排名弄掉怎么可以讓百度快速收錄視頻
????????函數(shù):子程序,是一個(gè)大型程序中的某部分代碼,由一個(gè)或多個(gè)語(yǔ)句塊組成,它負(fù)責(zé)完成某項(xiàng)特定任務(wù),而且相較于其他代碼,具有相對(duì)獨(dú)立性。一般會(huì)有輸入?yún)?shù)并有返回值,提供對(duì)過(guò)程的封裝和細(xì)節(jié)的隱藏,這些代碼通常被集成為軟件庫(kù)。
????????庫(kù)函數(shù)
????????可以在Reference - C++ Reference (cplusplus.com)上查看庫(kù)函數(shù)的詳細(xì)介紹。
char * strcpy ( char * destination, const char * source );
#include <stdio.h>
#include <string.h>//char * strcpy ( char * destination, const char * source );
int main()
{char arr1[20] = {0};char arr2[20] = "Hello World!";strcpy(arr1,arr2);printf("%s\n",arr1);return 0;
}
void * memset ( void * ptr, int value, size_t num );
#include <stdio.h>
#include <string.h>//void * memset ( void * ptr, int value, size_t num );
int main()
{char arr1[20] = "Hello World!";memset(arr1,'$',5);printf("%s\n",arr1);return 0;
}
????????數(shù)組名就是首元素地址,可以把首元素地址加上數(shù)字,再配合后面的num,可以達(dá)到對(duì)字符數(shù)組即字符串內(nèi)任意位置的字符進(jìn)行修改。
#include <stdio.h>
#include <string.h>//void * memset ( void * ptr, int value, size_t num );
int main()
{char arr1[20] = "Hello World!";memset(arr1+6,'$',5);printf("%s\n",arr1);return 0;
}
????????使用庫(kù)函數(shù)時(shí),必須包含對(duì)應(yīng)的頭文件。
????????自定義函數(shù)
????????求兩個(gè)數(shù)中的最大值
#include <stdio.h>
#include <string.h>int get_max(int a,int b){if(a >= b)return a;elsereturn b;//return (a > b ? a : b);
}
int main()
{//求兩個(gè)數(shù)中的最大值int a = 0;int b = 0;int c = 0;scanf("%d %d",&a,&b);//c = (a > b ? a : b);c = get_max(a,b);printf("%d\n",c);return 0;
}
????????交換兩個(gè)數(shù),注意形參和實(shí)參的區(qū)別,傳值和傳址的區(qū)別。
????????如果不用指針傳地址的話,交換的只是形參,而不會(huì)改變實(shí)參,從而達(dá)不到通過(guò)函數(shù)來(lái)交換數(shù)據(jù)的效果。
#include <stdio.h>
#include <string.h>void swap(int x,int y){int z = x;x = y;y = x;
}
int main()
{//交換兩個(gè)數(shù)int a = 0;int b = 0;int c = 0;scanf("%d %d",&a,&b);swap(a,b);printf("%d %d\n",a,b);return 0;
}
????????結(jié)果如圖,并沒(méi)有達(dá)到交換的效果:
????????通過(guò)調(diào)試可以看出,a,b和x,y地址不同,是完全不同的兩個(gè)變量,交換形參x和y的值并不能交換a和b的值。
? ? ? ? 當(dāng)實(shí)參傳遞給形參的時(shí)候,形參是實(shí)參的一份臨時(shí)拷貝,對(duì)形參的修改不會(huì)影響實(shí)參。
????????應(yīng)該傳遞變量的地址,通過(guò)對(duì)地址解引用來(lái)改變變量的值。
#include <stdio.h>
#include <string.h>void swap(int* a,int* b){int c = *a;*a = *b;*b = c;
}
int main()
{//交換兩個(gè)數(shù)int a = 0;int b = 0;int c = 0;scanf("%d %d",&a,&b);swap(&a,&b);printf("%d %d\n",a,b);return 0;
}
? ? ??
????????在需要修改實(shí)參的情況下,通過(guò)傳址傳參才能達(dá)到修改實(shí)參的效果。
? ? ? ? 一個(gè)工程中,可以有多個(gè).c文件,但是只能有一個(gè)main函數(shù)。
? ? ? ? 函數(shù)可以嵌套調(diào)用,但是不能嵌套定義。
? ? ? ? 函數(shù)可以鏈?zhǔn)秸{(diào)用
#include <stdio.h>int main()
{printf("%d\n",printf("%d",printf("%d",43)));return 0;
}
????????先是 main 函數(shù)進(jìn)去,然后 printf 一層層調(diào)用,先是最里層 printf 打印43,43是兩個(gè)字符,所以 printf("%d",43) 返回值是 2 ,第二層 printf 相當(dāng)于 printf("%d",2) ,所以第二層 printf 打印 2 ,2是 1 個(gè)字符,所以 printf("%d",2) 返回值是 1 ,第三層 printf 相當(dāng)于 printf("%d",1) ,所以第三層 printf 打印 1 ,最后打印的結(jié)果就是4321,如圖:
? ? ? ? 函數(shù)不寫(xiě)返回值的時(shí)候,默認(rèn)返回類型是 int ,但還是建議寫(xiě)好返回值,這樣更直觀。在寫(xiě)好返回值但是不返回的時(shí)候,在一些編譯器上返回的是函數(shù)執(zhí)行過(guò)程中最后一條指令執(zhí)行的結(jié)果。
int main(void)
{return 0;
}
????????這種寫(xiě)法是明確的說(shuō)明,main函數(shù)不需要參數(shù)。