A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© ITClody 中级黑马   /  2015-6-23 00:38  /  887 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

                                                                IOS学习笔记--函数的使用
  1)fgets()和fputs()函数的使用                                                               
       a、fgets()该函数是一个文件操作相关的函数。
             暂时使用这个函数可以从键盘上接收一个字符串,保存到数组中。
             原来学过的接收字符串的方法:
                一、
                        char str[50];
                        scanf("%s"str);//缺点是:不能接受空格
                        二、
                        gets(str);//优点:可以接受空格。缺点:会有一个警告,不安全
                                  //比如数组长度为50,如果我们输入的长度正好是50,此时把50个字符全部存到数组中,这是就会存在问题,因为没有空间存放字符串结束符。
         fgets()是一个安全的字符串接收函数。                                          
                    char ch[5];//如果使用fgets此时数组中最多可存放4个可见字符。
                                           //会自动把数组的最后一个元素存放为'\0'。
                 b、fgets()使用格式:
                     fgets(数组名,数组长度,stdin);//stdin表示标准的输入
                         代码:
                         char ch[10];
                         //fgets从输入缓冲区读取一个字符串,保存到字符数组中
                         fgets(ch,sizeof(ch),stdin);
                         printf("%s\n",ch);                                       
                         //当输入的字符串长度大于数组的长度,此时fgets会自动把数组的最后一个元素变成\0
                         //当输入的字符串的长度小于数组长度的时候,fgets()还会接收回车键\n
                         if()(ch[strlen(ch)-1])=='\n'){
                             ch[strlen(ch)-1]='\0';//把\n换成\0
                     }
                 c、fputs()使用格式:
                         fputs(数组名,stdout);
                         fputs()是不会自动换行的。
                         fputs()也不能进行格式化的输出。
                         
  2)fgets()和fputs()的优缺点
        优点:fgets()、fputs()帮我们自动截取输入的字符串,使得我们对字符串的存取是安全的。
                缺点:会有警告,不安全。
                对比:scanf()接收一个大与字符数组长度的字符串,此时字符数组长度之外的字符是不安全的(越界访问的)
               
  3)const关键字介绍及作用
                a、什么是const?
                        const是一个类型修饰符;;
                        使用const修饰符变量则可以让变量的值不能改变。
                        常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。
        b、const有什么主要的作用?
                        ①可以定义const常量,具有不可变性。
                        ②便于进行检查,使编译器对处理内容有更多了解,消除了一些隐患。
                        ③可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改。同宏定义一样,可以做到不变则已,一变都变。
                        ④可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。
                            例如:void f(const int i){......}
                                如果在函数体内修改了i的值,编译器就会报错。
                        ⑤可以节省空间,避免不必要的内存分配。例如:
                                #define PI 3.14159                        //常量宏
                                const double Pi=3.14159;        //此时并未将Pi放入ROM中...
                                double i=Pi;                                //此时为Pi分配内存,以后不再分配
                                double I=PI;                                //编译期间进行宏替换,分配内存
                                double j=Pi;                                //没有内存分配
                                double J=PI;                                //再进行宏替换,又一次分配内存
                                const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是像#define一样给出的是立即数,所以,const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干个拷贝。
                        ⑥提高了效率。编译器通常不为普通const常量分配存储空间,而是将他们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。
        c、如何使用const?
                        ①修饰一般常量  一般常量是指简单类型的常量。这种常量在定义时,修饰符const可以用在类型说明符前,也可以用在类型说明符后。
                            例如:int const x=2;  或者    const int x=2;
                        !!通过强制类型转换,将地址赋给变量,再作修改即可改变const常量值。
                            int *p=&a;
                                *p=100;   //强制修改常量
                                printf("%d\n",*p);//此时值发生改变
                       
                        ②修饰指针
                                一、const修饰的指针变量的指向可变,指向的变量值不可变。
                                        int a=10;
                                        int b=20;
                                        //定义一个指针变量,p指向a
                                        int *p=&a;
                                        *p=1000;
                                        printf("%d\n",a);//输出为1000
                               
                                        int a=10;
                                        int b=20;
                                        //定义一个指针变量,p指向a
                                        const int *p=&a;//此处const的作用是指向变量p的指向可以改变,但是指向的变量的值是不能改变的
                                                           p=&b;//可以改变指向
                                        *p=1000;//编译报错
                                        printf("%d\n",a);//输出为1000                                                       
                                                               
                                二、const修饰的指针变量,指针变量指向的值可以改变,指向不能变。
                                        int a=10;
                                        int b=20;
                                        int * const p2=&a;
                                        *p=2000;        //此时值可以改变,不会有错               
                                        p=&b;                //此时编译报错,即p的指向不可以变                       
                                                               
                                三、const修饰的指针变量的指向和值都不能改变
                                        int a=10;
                                        int b=20;
                                        const int * const p=&a;
                                        p=&b;                //编译报错,指向不可变
                                        *p=1000;        //编译报错,值不可变
                                记忆的技巧:
                                        看 const 和 * 的位置:
                                                如果const在*的左侧,此时表示指针变量指向的变量的值不能变,但是指向可以变。
                                                如果const在*的右侧,此时表示指针指向的变量的值可以改变,但是指向不可以改变。
                                                如果const出现在*的两测,表示指针变量的指向和值都不能改变。
               

4 个回复

倒序浏览
其实在真实的企业环境中,很少用到这些的,都是使用文件或者数据库进行数据的存取的
回复 使用道具 举报
xwqaz 发表于 2015-6-23 09:26
其实在真实的企业环境中,很少用到这些的,都是使用文件或者数据库进行数据的存取的 ...

基础必须要掌握的
回复 使用道具 举报
好难啊 你是复制过来的吗
回复 使用道具 举报
zhanghao2744491 发表于 2015-6-23 13:19
好难啊 你是复制过来的吗

边看视频变整理的学习笔记
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马