如何攻破C语言学习、笔试与机试的难点

第一节??C语言编程中的几个基本概念1.1? ?? ?#include< >与#include" "?

1.? ?#include< >和#include" "有什么区别?

这个题目考查大家的基础能力,#include< >用来包含开发环境提供的库,

#include" "用来包含.c/.cpp文件所在目录下的头文件。注意:有些开发环境可以在当前目录下面自动收索(包含子目录),有些开发环境需要指定明确的文件路径名。

1.2? ?? ?switch()

1.? ?switch(c) 语句中 c 可以是 int, long, char, float, unsigned int 类型?

其实这个题目很基础,c应该是整型或者可以隐式转换为整型的数据,很明显不能是实型(float、double)。所以这个命题是错误的。

1.3? ?? ?const

1.? ?const有什么用途?

虽然const很常用,但是我相信有很多人仍然答不上来。

(1) 欲阻止一个变量被改变,可以使用const 关键字。在定义该 const 变量时,通常需要对它进行初 始化,因为以后就没有机会再去改变它了;

(2) 对指针来说,可以指定指针本身为 const,也可以指定指针所指的数据为 const,或二者同时指定为 const;

(3) 在一个函数声明中,const 可以修饰形参,表明它是一个输入参数,在函数内部不能改变其值;

(4) 对于类的成员函数,若指定其为 const 类型,则表明其是一个常函数,不能修改类的成员变量;

(5) 对于类的成员函数,有时候必须指定其返回值为 const 类型,以使得其返回值不为“左值”。

1.4? ?? ?#ifndef/#define/#endif

1.? ?头文件中的 #ifndef/#define/#endif 干什么用?

其实#ifndef、#define、#endif这些在u-boot、linux内核文件中经常见到,在这么大型的程序中大量使用,可见它的作用不可小觑。

这些条件预编译多用于对代码的编译控制,增加代码的可裁剪性,通过宏定义可以轻松的对代码进行裁剪。

#ifndef/#define/#endif最主要的作用是防止头文件被重复定义。

1.5? ?? ?全局变量和局部变量

1.? ?? ?? ?全局变量和局部变量在内存中是否有区别?如果有,是什么区别?

全局变量储存在静态数据库,局部变量在堆栈。 其实,由于计算机没有通用数据寄存器,则函数的参数、局部变量和返回值只能保存在堆栈中。提示:局部变量太大可能导致栈溢出,所以建议把较大数组放在main函数外,防止产生栈溢出。

思考:如程序清单1. 1所示。会出现怎样的情况?

程序清单1.?1??大数组放在main函数中导致堆栈溢出

int main(int argc, char *argv[])

{

? ? int iArray[1024 * 1024];

? ? return 0;

}

第二节??数据存储与变量2.1? ?? ?变量的声明与定义

1.? ?? ?? ?如程序清单2. 1所示会不会报错?为什么?如果不会报错,又是输出什么结果?

程序清单2.?1??变量的声明与定义

#include

static int??a? ?;

static int??b[] ;

int main( int argc , char *argv[] )

{

? ? printf( "%d??%d \n" , a , b[0] ) ;

? ? return 0 ;

}

static int? ?a = 8 ;

static int? ?b[4]??;

这个程序是不会报错的,并且连警告都不会出现。输出的结果是:8??0

static int a ,这句程序是声明全局变量a;static int b[],这句程序是声明全局数组变量b,并且是不完全声明,也就是可以省略数组下标。static int a = 8,这里才是定义全局变量a,static int b[4],这里是定义全局变量b。

2.2? ?? ?局部变量与全局变量的较量

1.? ?? ?? ?请问如程序清单2. 2所示输出什么?

程序清单2.?2??局部变量与全局变量

#include

static int a = 8 ;

int main( int argc , char *argv[] )

{

? ? int a = 4 ;

? ? printf( "%d \n" , a ) ;

? ? return 0 ;

}

C语言规定,局部变量在自己的可见范围内会“挡住”同名的全局变量,让同名的全局变量临时不可见。即在局部变量的可见范围内不能访问同名的全

攻破c语言笔试与机试难点,如何攻破C语言学习、笔试与机试的难点.doc相关推荐

  1. python的难点是什么_总结学习python的29个操作难点

    初学Python的人总会遇到这样或者那样的问题,在我学习Python的这段时间我总结了自己的29个问题,具体如下: 1 在cmd下 盘与盘之间的切换 直接 D或d: 就好 2 查找当前盘或者文件下面的 ...

  2. 华为OD机试 - 相对开音节(C 语言解题)【独家】

    最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单 华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典 [华为OD机试]全流程解析+经验分享,题型分 ...

  3. 【独家】华为OD机试 - 英文输入法(C 语言解题)

    最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单 华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典 [华为OD机试]全流程解析+经验分享,题型分 ...

  4. 【独家】华为OD机试 - 猜字谜(C 语言解题)

    最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单 华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典 [华为OD机试]全流程解析+经验分享,题型分 ...

  5. 华为OD机试 - 简易压缩算法(C 语言解题)【独家】

    最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单 华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典 [华为OD机试]全流程解析+经验分享,题型分 ...

  6. 【独家】华为OD机试 - 去重求和(C 语言解题)

    最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单 华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典 [华为OD机试]全流程解析+经验分享,题型分 ...

  7. 华为OD机试 - GPU 调度(C 语言解题)【独家】

    最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单 华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典 [华为OD机试]全流程解析+经验分享,题型分 ...

  8. 华为OD机试 - 能力组队(C 语言解题)【独家】

    最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单 华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典 [华为OD机试]全流程解析+经验分享,题型分 ...

  9. 华为OD机试 - 内存池(C 语言解题)【独家】

    最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单 华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典 [华为OD机试]全流程解析+经验分享,题型分 ...

最新文章

  1. 报错解决:undefined reference to `snappy::MaxCompressedLength(unsigned long)'
  2. Android init.rc如何启动service去执行sh脚本
  3. python第二章上机实践_第二章上机实践报告
  4. 如何使用busybox编译和生成最简linux根文件系统(rootfs)
  5. Server Tomcat Server at localhost failed to start解决方案
  6. 金三银四大厂面经总结,java模块化打包
  7. MFC PreTranslateMessage介绍
  8. Android图形之HWC(二十四)
  9. 【学习】如何用jQuery获取iframe中的元素
  10. LayuiAdmin 滚动条设置问题解决
  11. 以业务流程为框架的企业组织设计
  12. 软件测试知识点和面试题--性能测试篇
  13. SLAM建图精度评估 by EVO
  14. office2019word2019excel2019ppt2019关闭自动更新设置步骤
  15. Linux内核4.14版本——SPI NOR子系统(2)——spi-nor.c分析
  16. 阿里云国际站实名认证上传材料填写样例(域名持有者为组织)
  17. SEO不应该忽视的9个谷歌排名因素
  18. Windows 经典桌面背后的故事
  19. 区块链3.0在2018年爆发?不要讲颠覆世界的故事,耐心做好区块链应用……
  20. 腾讯管家强制粉碎文件功能右键添加

热门文章

  1. No serializer found for class org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer解决方法
  2. 用iframe设置代理解决ajax跨域请求问题
  3. mybatis 调用 oracle 存储过程 select into 无记录时NO_DATA_FOUND异常处理分析
  4. 安装kafka过程及出现的问题解决
  5. eclipse下tomcat添加部署Module,Web名称与项目名称不一致的解决方法
  6. nuxt 脚手架创建nuxt项目中不支持es6语法的解决方案
  7. SpringMVC 静态资源CSS,JS访问不了 解决方法
  8. python解决四舍五入问题
  9. 【翻译】【linux设备驱动】linux地址类型
  10. sql server 2008数据复制