Object-C 1.0 第三章:面向对象编程基础知识(OOP)

时间:2021-05-06 20:14:29

    1. 间接(indirection)
        1.1 变量和间接(使用变量来代替一些数字)
        1.2 使用文件名的间接
                const  表示一个变量不允许被改变
                    const int nValue; //nValue是const
                    const char *pContent; //*pContent是const, pContent可变
                    const char* const pContent; //pContent和*pContent都是const
                strlen(String value);  // 返回value字符串的长度
                如下面一个例子,可由非专业人员书写文件,这就是间接    ,但是路径为决定路径,不是太理想
                    FILE *worldFile = fopen("/tmp/words.txt","r"); // 打开文件并读取文件内容,其中tmp为Unix临时目录
                    char word[100];
                    while(fgets(word , 100 , wordFile)){   //  fgets()从文件中读取一行文本并将其放到word中
                        word[strlen[word]-1] = '\0';  // fgets()调用会保留分开每一行的换行符,我们不需要,如果留下他,会增加一个字符,所以改为\0
                        NSLog(@"%s is %d characters long",word,strlen(word)); // 打印信息
                    }    
                        fclose(wordFile);  // 关闭文件

 


    indirection(间接)  -->  不在代码中直接使用某个值,而是使用指向该值的指针

    变量与间接 --> for(int i = 1 ;i< 5 ;i++) 是错误的 ,必须在for循环之前就声明变量 int i;for(i =1;i<5;i++)

    const关键字:表示声明一个常量,其值不可以改变 (C中的关键词)

    使用文件名的间接 --> %d 格式说明符取strlen()函数的整数值,此函数计算字符串的长度,并输出单次本身及其长度  %s 因为是C字符串数组
    
        FILE *wordFile = fopen("/tmp/words.txt","r");
        char word[100];
        while(fgets(word,100,wordFile)){
            word[strlen(word)-1] = '\0';
            NSLog(@"%s is %d characters long",word,strlen(word));
        }
        fclose(wordFile);
            首先fopen()打开words.txt 文件并读取文件内容,然后,fgets()从文件中读取一行并将其放到word中。
            fgets()调用会保留分开每一行的换行符,但是我们不需要,因为留下他,换行符会被记为单词中的一个字符,为了解决这个问题,我们将换行符替换为0,表示字符串的结束,
            最后使用NSLog()输出单次以及长度
  
    typedef
  
        typedef是C中的关键字,它的主要作用是给一个数据类型定义一个新的名称,这些类型报告内部数据类型,比如int,char 还有自定义类型struct,enum等。
      typedef一般有两个作用:(1) 给某种类型顶一个定义比较容易记的名字,相当于别名;(2)简化较为复杂的类型声明。
  
  方括号的其他意义:
        它们用于通知某个对象该做什么。在方括号中,第一项是对象,其余部分是你需要对象执行的操作。

  

  输出一个字符
        putchar(c); // put character(给字符的缩写)

  输入一个字符
        getchar();  //  只能接收一个字符,如果输入多个字符,就要使用多个getchar() 函数