zoukankan      html  css  js  c++  java
  • 函数指针&&命令行参数

    C语言中比较高级的部分

    函数指针:

    程序运行期间,每个函数都会占用一段连续的内存空间。而函数名就是该函数所占内存区域的起始地址。

    我们可以将函数的入口地址赋给一个指针变量,使该指针变量指向该函数。然后通过指针变量就可以调用这个函数。

    这种指向函数的指针变量成为"函数指针"。

    定义形式

    类型名(* 指针变量名)(参数类型1,参数类型2,...)

    int(*pf)(int ,char)

     1 #include<stdio.h>
     2 void PrintMin(int a, int b){
     3   if(a<b)
     4     printf("%d",a);
     5   else
     6     printf("%d",b);
     7 }
     8 int main(){
     9   void (*pf)(int, int);
    10   int x=4, y=5;
    11   pf = PrintMin;
    12   pf(x, y);
    13   return 0;  
    14 }

    函数指针和qsort库函数,函数指针有大用处

    qsort可以对任意类型的数组进行排序。

    void qsort(void *base, int nelem, unsigned int width, 
    int(*pfCompare)(const void*, const void *));

    对数组排序,需要知道:

    1 数组起始地址

    2 数组元素个数

    3 每个元素大小

    4 元素谁在前谁在后的规则

    pfCompare: 指向比较函数的地址(函数指针)

    #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;
    }

    命令行参数

    cmd

    notepad sample.txt

    int main(int argc, char * argv[])

    {

    ....

    }

  • 相关阅读:
    线性回归和 逻辑回归 的思考(参考斯坦福 吴恩达的课程)
    数据结构算法基础-内部排序算法
    机器学习《test》
    day1.接口测试(概念、Postman、SoapUI、jmeter)
    SQL2000 3核6核 CUP 安装SP4
    SQL常用语句
    SQL SERVER 2000数据库置疑处理
    常用终端命令
    c++ 位操作
    计算机为什么用补码存储数据?
  • 原文地址:https://www.cnblogs.com/focus-z/p/9307960.html
Copyright © 2011-2022 走看看