C语言【C语言】5.main(),递归,include以及Xcode的稍知识

  • Xcode函数(方法)注释方法:

    • /** 函数(方法)的解释 */
    • @param 参数名 参数解释
    • @warning 提醒注意的内容
    • @return 返回值 返回值解释
  • C语言中函数的定义只能发出一个,不克重名(与另外语言不同的是,只要名字同样就是重名,即使参数与归值不同,比如int
    sayHello();和void sayHello(int a)是同名的)。

  • 关于main函数:

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

    argc代表次第于上main函数时之参数的个数。默认为1

    argv代表富含的相继参数。默认为次第的名字

    printf(“argc: %i, argv: %s”, argc, argv[0]);

    点击Xcode的停下键右边的按钮,可以找到Edit
    Scheme
    ,点击进入,左面菜单里找到Run,之后以右手找到Arguments,找到Arguments
    Passed On Launch
    ,里面加加启动参数。比如补充加了一个”Hello”:

    printf(“argc: %i, argv: %s”, argc, argv[1]);

    而今虽然是:

    argc: 2, argv: Hello

  • 递归很耗费内存,因为老是调用都见面开发新的半空中。通常来说一个函数写递归要分开下面几乎步:

    • 找到得了条件,否则会尽递归下去。通常来说用if-else中之if来写。

    • 找到递归公式,即凡是盖怎样的法则来递归的。通常用if-else中的else来描写。

    • 用递归法求N的阶乘:

      分析

      “`

      4!=432*1

      =4*3!

      =432!

      =432*1!

      n!=(n-1)!*n;

      (n-1)!=(n-2)!*(n-1);

      … …

      1!=1; 作为递归的截止条件

      “`

      实现

      int factorial(int n){
      int result = 0; //定义变量用于存放阶乘的结果
      if (n==1) { //如果n=1的时候,1!的结果还是1
          result = 1;
      }else{
          result = factorial(n-1)*n;//如果不是1,阶乘=(n-1)!*n;
      }
      return result;
      }
      
    • 计划一个函数用来计算B的n次方:

      分析

      result = 1;

      result = b

      result = result * b

      result = result * b

      myPow2(b, 0) = 1

      myPow2(b, 1) = b == myPow2(b, 0) * b

      myPow2(b, 2) = b * b == myPow2(b, 1) * b

      myPow2(b, 3) = b * b * b == myPow2(b, 2) * b

      实现

      int myPow2(int base, int n)
      {
        if (n <= 0) {
            return 1;
        }
        return myPow2(base, n - 1) * base;
      }
      

  • #include的腔文件未参与编译。

  • #include <yourFile.h>和#include “yourFile.h”:

    • 两岸的界别在:当让include的文书路径不是绝对路径的下,有例外之索顺序。

    • 对于利用对引号””来include文件,搜索的时刻照以下顺序:

      • 先行以当下漫长include指令的父文件所在文件夹内搜索,所谓的父文件,就是随即长达include指令所在的文书;
      • 而上平等步找不至,则在父文件的父文件所在文件夹内搜索;
      • 一旦达到一样步找不交,则在编译器设置的include路径内搜索;
      • 如若上亦然步找不至,则于系的include环境变量内搜寻
    • 对此以尖括号<>来include文件,搜索的时光以以下顺序:

      • 于编译器设置的include路径内找;
      • 若是达到同样步找不顶,则当网的include环境变量内找
    • 若您是自己安装clang编译器,clang设置include路径是(4.2凡是编译器版本):

      /usr/lib/clang/4.2/include

      Xcode自带编译器, clang设置include路径是:

      /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include

      Mac系统的include路径有:

      /usr/include

      /usr/local/include

      苟没此目录,可参照如下:

      打开终端输入:xcode-select –install

      设置Command Line Tools之后就会见面世

  • #include注意事项:

    • include 不必然不要是描写于率先实践(因为其的企图就是一定给拷贝代码)

      int main()

      {

      #include “yourFile.h”

      return 0;

      }

    • include的下,可以分包路径

      #include “yourDocument/yourFile.h”

      int main()

      {

      return 0;

      }

    • include
      语句后不欲加以”;”(因为#include它是一个预处理指令,不是一个言语)

  • Xcode运行原理:编译—>.o(目标文件)—>链接—>.out
    执行。先以协调的代码编译成二进制(.o文件),再与所倚之函数(类似于stdio.h中的)链接,最后生成.out可执行文件。

  • Mac下手动编译

    cc -c main.c // 编译

    cc main.o // 链接

    ./a.out // 执行