程序运行期间,每个函数都会占用一段连续的内存空间。而函数名为函数所占内存区域的起始地址(入口地址)。将入口地址赋给一个指针变量,使指针变量指向该函数。然后通过变量就可以调用这个函数。这种指向函数的指针就是“函数指针”。
类型名(* 指针变量名)(参数类型1,参数类型2),例如int (*pf)(int, char);
#include<stdio.h>
void PrintMin(int a, int b)
{
if (a < b)
{
printf("%d", a);
}
else
{
printf("%d", b);
}
}
int main()
{
void(*pf)(int, int);
int x = 4, y = 5;
pf = PrintMin;
pf(x, y);
return 0;
}
其中,比较函数需要自己编写
#include<stdio.h>
#include<stdlib.h>
int MyCompare(const void * elem1, const void * elem2) {
unsigned int *p1, *p2;
p1 = (unsigned int*)elem1;
p2 = (unsigned int*)elem2;
return (*p1 % 10) - (*p2 % 10);
}
# define NUM 5
int main()
{
unsigned int an[NUM] = {8,123,11,10,4};
qsort(an, NUM, sizeof(unsigned int), MyCompare);
for (int i = 0; i < NUM; i++) {
printf("%d ", an[i]);
}
return 0;
}
win+R 输入Cmd
使用命令行启动的C语言程序的main函数具有以下格式:
int main(int argc, char * argv[])
{...}
argc:启动程序时,命令行参数的个数。C/C++规定,可执行程序程序本身的文件名,也算一个命令行参数,因此,argc的值至少是1。
argv[]:指针数组,每个元素为char *类型指针,分别指向一个命令行参数。当命令行参数内部有空格时,用双引号将其括起来。
#include<stdio.h>
# define NUM 5
int main(int argc,char * argv[])
{
for (int i = 0; i < argc; i++)
{
printf("%s\n", argv[i]);
}
return 0;
}
将其release,得到XXX.exe文件,然后在控制台窗口敲.\XXX para1 para2 s.txt 5 "hello world"
,输出
\XXX.exe
para1
para2
s.txt
5
hello world
原文:https://www.cnblogs.com/rookieveteran/p/13801568.html