本篇博文的目的是为了记录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; //编译器报错。