C语言关键点温习

本篇博文的目的是为了记录C语言一些关键点的用法,后面回头翻翻,增强记忆,好记性不如烂笔头。

1、关键字之return,break 

         之前一直对return,break两个关键字的用法是模糊的,于是编写程序段做个小实验来验证,对之认识更加深刻了。所以在这里提示自己,学C语言有什么疑问的,就编写程序段来验证。

          return---一旦执行return语句,立即退出当前的执行函数,不管后面还有别的语句,一概都不执行,直接退出。

          break---一旦执行break语句,一是退出最近一层循环模块,二是退出switch语句。下面贴下自己的验证小片段代码:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

void printf_return()
{
   int n = 0;

   while(1)
   {
         while(1)
         {
                  printf("Please input a value:");
                  scanf("%d", &n);
                  if(n == 4)
                        break; //测试return语句时,用(return 0;)替换掉就行
                  else
                 {
                        printf("00000\n");
                  }
                 printf("break out of last while\n");
         }
         printf("break is getout of the while\n");
    }
}

int main()
{
       printf_return();
       printf("return is getout of the printf_return function \n");
      getch();

      return 0;
}

2、关键字之const

该关键字用于修饰变量,称为所谓的不变的变量,挺拗口又有点矛盾。既然是变量,又不能修改。正所谓,存在就是合理,它在C语言中用处还是挺大的。通过一些项目下来,总结下它的使用方法。各位觉得有说的不对的地方,请指出,我定虚心向学。

【1】修饰普通变量

          int const tmp = 1;       

          tmp = 2;                                           //编译时会报错

         对于普通变量,const 在类型前还是在类型后都没有关系,只要在变量名前面即可。所以(int const tmp = 1)等价于(const int tmp = 1),示例中,tmp 被const 修饰后,后面就不能通过赋值修改 a 的值,只能通过初始化的方式修改。

【2】三种形式修饰指针

         这个用法使用的比较多,比如一些传参时不希望被改变,形参都会通过使用const关键字来修饰。

         1)int const *p  等价于 const int *p,意思是指针p指向的空间地址内容不可改变,指针p可以指向别的空间地址

         示例: int  tmp = 1;

                     int tmp1 = 2;

                     const int *p = &tmp;            //p指向了tmp

                    *p = tmp1;                            //编译器会报错

                     p = &b;                                //可以编译通过。

                    总结:示例显示,试图通过p访问到tmp的空间地址将tmp的值修改,编译器报错。const int *p这种修饰指明指针p指向空间内容不可被修改,指针p指向空间地址可以被修改,即可以指向别的空间地址,例如p=&b,此时编译器是允许的。

       2)int * const p,这种修饰意思是:指针p指向的空间地址值不允许改变,它指向空间的内容是可以被修改的。

        示例:  int tmp = 1;

                     int tmp1 = 2;

                     int *const p = &tmp;

                     *p = 3;                                //指针指向空间地址的值可以被修改,编译器允许编译通过

                      p = & tmp1;                       //指针不能指向别的空间地址,此种修饰编译器编译报错

      3)int const * const p,这种修饰意思是:综合上面两种,即指针指向空间地址值不允许修改,指针指向空间的内容也不允许修改。

       示例:  int tmp = 1;

                   int tmp1 = 2;

                   int const * const p = & tmp; //这种修饰指针p指向空间地址值不允许修改,p指向空间地址的内容也不允许修改。

                   *p = 3;                                 //编译器报错

                   p = & tmp1;                         //编译器报错。

猜你喜欢

转载自blog.csdn.net/Mr_jianfeng/article/details/90215084