C/C++关键字(慢慢补充)

C语言面试重点

C语言速度快,写出的程序精炼、简单,面向过程,分析出解决问题的步骤,把步骤一步一步实现,使用时调用。

  1. 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;
}
  1. 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局部变量存在内存的静态区,即使当前函数运行结束,静态变量的值不会被销毁,还继续存在,函数下次运行时仍可以用到这个值。


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

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


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


在一个循环语句中, 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++面试重点

  • 背景
    (1)C++代码量相对较大,里面有一些不是必须的代码,C++会针对不同的对象做实例化,如内存管理: 程序员申请一块内存——为堆,所有的内存函数都被对象化。
    (2)根本思想:面向对象的思想中,任何事物都可以被看做一个对象,再复杂的模型结构都是由千万个对象组成的,分解成不复杂的对象处理(类似树状图结构)。
    如:地球是非常复杂的对象,把地球分支成各种动物、各种植物、空气、土壤等都是对象。对于每个对象,抽象起来最终可以分为两个要素——属性(此对象这个类的特征)+行为。
    (3)面向过程与面向对象是思想层面的问题,面向对象即把一个个封装成类,C/C++是语言的区别。eg:日常使用的图形用户界面窗口就是一个类,拉大拉小窗口等都是对象。

-面对对象的思想特点:
(1)封装 ——是面向对象思想描述的基础,意味着把对象的属性和方法结合成一个独立的系统单位,尽可能隐藏对象的内部细节。
(2)抽象——对具体问题进行概括的过程,是对一类公共问题进行统一描述的过程,类似于接口,信息交流要通过抽象后再进行具体的过程。
(3)继承——子类对象拥有与其基类相同的全部属性和方法,如人共有的属性:鼻子、眼睛、嘴…和一些方法:吃饭、睡觉…
(4)多态——指在基类中定义的属性和行为被子类继承后,可以具有不同的数据类型或者表现行为等特性,即在共性中寻找个性。
在这里插入图片描述

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值