C/C++举例讲解关键字的用法

 更新时间:2022年05月23日 11:00:41   作者:学编程的小渣渣a  
相对于其他语言来说,C语言的关键字算是少的了。在C98中关键子总共只有32个,我们来分析一下部分关键字在C/C++中它独特的作用

static

static修饰全局变量

static修饰的全局变量只能在当前声明文件内使用,不能够在其他文件中使用。

举例:

static int a=0;    //static修饰后变量a仅在本文件中可见,其他文件里不可见变量a(隐藏了),别的文件不可以调用
       int b=0;    //其他文件可以通过extern int b来使用本文件中的全局变量b

目标:此文件调用上一个文件中的全局部变量b

#include<stdio.h>
extern int b;      //先用extern把b调过来
	int main()
{
      int i=b;     //把b赋值给i
      return 0;
}

static修饰局部变量

include<stdio.h>
int main()
{
	int i=0;
	for(i=0,i<10;i++)
	{
		ptintf("counter=%d\n",fun());  //在main函数里调用fun函数,来修改counter的值并获取,前提counter必须被static修饰,若不修饰,counter会随着fun函数退出而销毁,其他外部函数不能获取counter的值
	}
	return 0;
}
int fun()                 //声明一个函数fun,实现计数功能
{
	static int counter;   //函数内部声明static局部变量counter,可以保证counter只能在fun函数内部被修改,其他地方不能修改counter的值;生命周期为整个源程序,作用域不改变只能在此函数内使用
	counter++;           //调用此fun函数时,counter就加1
	return counter;      //返回counter的值
}

static修饰函数

static对函数修饰与对全局变量的修饰相似,只能被本文件中的函数调用,不能被同一程序其他文件中的函数调用。

举例:

static int getdata1()  //static修饰getdata1,此函数不能被其他文件调用
{
	return 1;
}
     int getdata2()   //未加static修饰,其他文件可以调用getdata2()
{
	return 2;
     }

另一个文件:想调用getdata2()

extern int getdata2();  //把上一个文件中getdata2()函数调过来
	int main()
{
	int ret=getdata2(); //定义ret并初始化把getdata2的返回值赋给ret
	return 0;
}

注:

(1)一个源程序通常由若干个c文件组成,c文件之间相互调用函数与变量时,需要通过extern进行外部声明。

(2)extern的作用是用于声明外部变量、外部函数;static用来防止c文件内的函数、变量被外部调用,隐藏作用。

(3)声明对象:基本变量、函数、结构体、枚举等。

(4)static局部变量存在内存的静态区,即使当前函数运行结束,静态变量的值不会被销毁,还继续存在,函数下次运行时仍可以用到这个值。

const

1. const声明的变量的值不能再被修改,与#define相比,const限定符优点:

(1)宏定义仅是对字符常量简单替换,不能检查类型;

(2)const可以保护被修饰的变量,防止意外修改;

(3)编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高;

2.以下三个变量声明的含义:

(1)int const*p;中const 修饰的是指针p, 表示指针p的值不能改变,而p(即地址)是可以改变的。

(2)int * const p;中const修饰的 p(即地址)是常量,不可改变,但是指针p的值可以改变。

(3)int const *p const;中是(1)和(2)兼得,表示 只读, 其地址以及地址中对应的值都不可改变。

而const int *p与int const *p用法一样,修饰的都是指针p的值不能改变。

BOOL

关键字bool是声明 布尔逻辑变量的,变量要么是真,要么是假,用1表示true、0表示false;_Bool类型实际上是一种整数类型,仅占用1位存储空间, 程序通过布尔值可选择执行哪部分代码。

    bool done = false;
    while(!done)
    {
    ......
    }

break

关键字break是用来跳出一个do,for,while的循环,它也可以结束一个switch语句的 子句,让程序忽略下面的case代码;case关键字与switch搭配用来检测匹配。

continue

在一个循环语句中, continue语句用来结束这次循环,后面的循环继续,下面代码显示 除了10之外0-20的所有数字。

for(int i = 0;i < 21;i++)
{
	if(i == 10)   //判断i为10时,走这个if语句;i不为10时,就不走if语句,直接走cout语句
	{
	continue;     //判断i等于10了,那就结束这次循环,不计入(不cout)i为10这个数据 
	}
	cout <<i<<""; //cout用于在计算机屏幕上显示信息,即打印、输出
}

到此这篇关于C/C++举例讲解关键字的用法的文章就介绍到这了,更多相关C语言关键字内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C++浅析虚函数使用方法

    C++浅析虚函数使用方法

    对C++了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。本文就将详细讲讲虚函数表的原理与使用,需要的可以参考一下
    2022-08-08
  • 探讨数组与字符串输入的问题(C++版)

    探讨数组与字符串输入的问题(C++版)

    本文对C++数组与字符串输入的问题进行了探讨,需要的朋友可以参考下
    2015-07-07
  • C++ STL标准库std::vector扩容时进行深复制原因详解

    C++ STL标准库std::vector扩容时进行深复制原因详解

    我们知道,std::vector之所以可以动态扩容,同时还可以保持顺序存储,主要取决于其扩容复制的机制。当容量满时,会重新划分一片更大的内存区域,然后将所有的元素拷贝过去
    2022-08-08
  • 基于Sizeof与Strlen的区别以及联系的使用详解

    基于Sizeof与Strlen的区别以及联系的使用详解

    本篇文章是对Sizeof与Strlen的区别以及联系的使用进行了详细的介绍。需要的朋友参考下
    2013-05-05
  • C++中的vector中erase用法实例代码

    C++中的vector中erase用法实例代码

    在vector数组中我们删除数组经常用的就是erase方法,但是earse的用法一不注意就会出错,今天我就遇到了,所以在这里总结一下,避免大家用错,对vector中erase用法感兴趣的朋友跟随小编一起看看吧
    2022-11-11
  • opencv如何识别图片上带颜色的圆

    opencv如何识别图片上带颜色的圆

    这篇文章主要为大家详细介绍了opencv如何识别图片上带颜色的圆,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • Matlab中图像数字水印算法的原理与实现详解

    Matlab中图像数字水印算法的原理与实现详解

    数字水印技术作为信息隐藏技术的一个重要分支,是将信息(水印)隐藏于数字图像、视频、音频及文本文档等数字媒体中,从而实现隐秘传输、存储、标注、身份识别、版权保护和防篡改等目的。本文就来讲讲图像数字水印算法的原理与实现,感兴趣的可以了解一下
    2023-04-04
  • VC中CDC、HDC、pDC区别与联系及相互转换

    VC中CDC、HDC、pDC区别与联系及相互转换

    这篇文章主要介绍了VC中CDC、HDC、pDC区别与联系及相互转换的方法,非常的详细,有需要的小伙伴可以参考下,希望对大家学习VC能够有所帮助。
    2015-11-11
  • 浅析C++中单链表的增、删、改、减

    浅析C++中单链表的增、删、改、减

    以下是对C++中单链表的增、删、改、减进行了详细的介绍,需要的朋友可以过来参考下
    2013-09-09
  • 浅析结束程序函数exit, _exit,atexit的区别

    浅析结束程序函数exit, _exit,atexit的区别

    在一个程序中最多可以用atexit()注册32个处理函数,这些处理函数的调用顺序与其注册的顺序相反,也即最先注册的最后调用,最后注册的最先调用
    2013-09-09

最新评论