有時我們想呼叫乙個函式,卻又想給它傳不同數量的引數,c語言為我們提供了可變引數這個功能。
#include #include //要想使用可變引數,必須引入此標頭檔案
void cal(int num,...)
int main()
函式中第乙個引數代表後面引數的數量,後面的三個省略號定義了可變引數。
id函式及其描述
1void *calloc(int num ,int size) 在記憶體中動態分配num個長度為size的連續空間,並將每乙個位元組都初始化為0
2void free (void *address) 釋放指標address指向的記憶體塊,釋放的是動態分配的記憶體
3void *malloc(int num) 在堆區分配制定大小的記憶體空間,不進行初始化
4void *realloc(void *address, int newsize) 重新分配記憶體,記憶體大小擴充套件到newsize
在程式退出後系統會自動釋放分配的記憶體,但是要在不需要記憶體或要增大記憶體空間時,要realloc或free掉記憶體。
1、氣泡排序
重複得比較相鄰兩個變數的大小,每次確定剩餘元素中的最小(大)變數。
#include void swap(int arr,int len)
}} }
int main();
int len = (int)sizeof(arr)/sizeof(*arr); //sizeof(arr)表示陣列arr所佔記憶體大小,siazeof(*arr)表示陣列arr中第乙個元素的記憶體大小,整個表示式就是陣列的長度。
swap(arr,len);
int i;
for(i=0;i2、選擇排序
選擇排序就是每次從剩下的所有元素中選出最小(大)的元素按順序排列。
#include void swap(int *a,int *b)
void selection_sort(int arr, int len)
}
3、插入排序
插入排序是一種簡單直觀的排序方法,通過構建有序列表,將未排序數列從後向前掃瞄,將元素插入到合適的位置,已排序的元素可能會不斷向後挪位,為新元素空出位置。
void insertion_sort(int arr, int len)
}
4、希爾排序
希爾排序可以說是插入排序的公升級版,利用增量遞減排序,首先初始增量我們設為陣列長度除以2,也就是希爾增量,每個迴圈增量都減半。
void shellsort(int arr, int len)
arr[j + increment] = temp; }
}}
c 語言可變引數
1 當無法列出傳遞函式的所有實參的型別和數目時,可用省略號指定參數列 void foo void foo parm list,2 函式引數的傳遞原理 函式引數是以資料結構 棧的形式訪問,從右至左入棧.eg include void fun int a,int main output 12 343 獲...
c語言可變引數
ifdef debug print info x printk x,else print info x endif 一 什麼是可變引數 我們在c語言程式設計中有時會遇到一些引數個數可變的函式,例如printf 函式,其函式原型為 int printf const char format,它除了有乙個...
C語言可變引數
在gnu c中,巨集可以接受可變數目的引數,就象函式一樣,例如 1 2 define pr debug fmt,arg.printk kern debug fmt,arg 用可變引數巨集 variadic macros 傳遞可變參數列 你可能很熟悉在函式中使用可變參數列,如 1 voidprintf...