【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 // 执行

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,186评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,858评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,620评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,888评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,009评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,149评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,204评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,956评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,385评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,698评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,863评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,544评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,185评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,899评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,141评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,684评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,750评论 2 351

推荐阅读更多精彩内容