关于C/C++一些面试/笔试题的反思(超基础的知识点)

1、用变量a给出下面的定义 

a) 、一个整型数; 

int a;

b)、一个指向整型数的指针; 

int *a;

c)、一个指向指针的指针,它指向的指针是指向一个整型数; 

int **a;

d)一个有10个整型的数组; 

int a[10];

e)、一个有10个指针的数组,该指针是指向一个整型数; 

int *a[10];

f)一个指向有10个整型数数组的指针; 

int (*a)[10];

g)、一个指向函数的指针,该函数有一个整型参数并返回一个整型数; 

int (*a)(int);

h)、一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数。

int (*a[10])(int);

2、以下为32为windows下的c++程序,请计算: 

char str[]="hello";
char *p=str;

请计算: 

sizeof(str)
sizeof(p)
strlen(str)
strlen(p)

sizeof(str)=6 ;

sizeof(p)=4 ;

strlen(str)=strlen(p)=5;

3、内存问题

(1)、内存分配方式及其区别?

一是从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如,全局变量和static变量。

二是从栈上创建。栈区由编译器自动分配释放,存放函数的参数值、局部变量的值等。

三是从堆上动态分配。一般由程序员分配释放,若程序员不释放,很有可能出错,程序会在结束时由OS回收。

(2)、new/delete与malloc/free有何区别与联系?

相同点:两者都是在堆上进行动态的内存操作。

不同点:malloc函数需要指定内存分配的字节数并且不能初始化对象,free也不会调用对象的析构函数;但是new会自动调用对象的构造函数且detele也会自动调用对象的析构函数。

(3)、堆栈溢出的原因有可能是什么?

可能的原因是:一是循环的递归调用导致的,若使用大数据结构的局部变量,也可能导致堆栈溢出;二是没有回收垃圾资源会导致内存泄露最后耗尽系统内存。

4、一些重要的关键字

(1)、static的用途

一是限制变量的作用域;二是设置变量的存储域。

具体如下:

1)、在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变;

2)、在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。

3)、在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。

(2)、关键字volatile的含义

与大家更熟悉的const一样,volatile是一个类型修饰符(type specifier)。它是被设计用来修饰被不同线程访问和修改的变量。

一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:

1)、并行设备的硬件寄存器(如:状态寄存器);

2)、一个中断服务子程序中会访问到的非自动变量(Non-automatic variables);

3)、多线程应用中被几个任务共享的变量。

(3)、const

const意味着"只读"(非标准但正确的答案)。

下面的声明都是什么意思?

const int a;
int const a;
const int *a;
int * const a;
int const * a const;

前两个的作用是一样,a是一个常整型数。

第三个意味着a是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以)。

第四个意思a是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)。

最后一个意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的)。

时间: 2024-09-27 01:40:15

关于C/C++一些面试/笔试题的反思(超基础的知识点)的相关文章

Spring,hibernate,struts经典面试笔试题(含答案)_java

本文讲述了Spring,hibernate,struts经典面试笔试题及其参考答案.分享给大家供大家参考,具体如下: 1.Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Sesssion 4.创建事务Transation 5.持久化操作 6.提交事务 7.关闭Session 8.关闭SesstionFactory 为什么要用: ① . 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代

Java面试笔试题大汇总(最全+详细答案)

声明:有人说, 有些面试题很变态,个人认为其实是因为我们基础不扎实或者没有深入.本篇文章来自一位很资深的前辈对于最近java面试题目所做的总结归纳,有170道题目 ,知识面很广 ,而且这位前辈对于每个题都自己测试给出了答案 ,如果你对某个题有疑问或者不明白,可以电脑端登录把题目复制下来然后发表评论,大家一起探讨,也可以电脑端登录后关注我给我发私信,我们一起进步! 以下内容来自这位前辈 2013年年底的时候,我看到了网上流传的一个叫做<Java面试题大全>的东西,认真的阅读了以后发现里面的很多题

php面试笔试题一

* 请实现一个函数,输入一段文本,把文本解析到一个数组中,数组每行元素的key通过输入参数指定. 函数原型:function ExplodeLines($text, $columnNames) 例如,输入:  代码如下 复制代码 $text = " Apple,20,red Pear,10,yellow "; $columnNames = array('Fruit', 'Number', 'Color') 函数返回: array( array('Fruit'=>'Apple',

Javascript面试笔试题(非常实用)

考试时间90分钟 一.不定项选择题 (每题3分,共30分) 1. 声明一个对象,给它加上name属性和show方法显示其name值,以下代码中正确的是( D ) A. var obj = [name:"zhangsan",show:function(){alert(name);}]; B. var obj = {name:"zhangsan",show:"alert(this.name)"}; C. var obj = {name:"z

asp.net(c#)程序员面试笔试题(3)【转】

2 .列举ASP.NET 页面之间传递值的几种方式. 答. 1).使用QueryString, 如....?id=1; response. Redirect().... 2).使用Session变量 3).使用Server.Transfer 3. 一列数的规则如下: 1.1.2.3.5.8.13.21.34...... 求第30位数是多少, 用递归算法实现. 答:public class MainClass { public static void Main() { Console.WriteL

昨天做了套C++笔试题,面试官说从代码看出编程缺经验

问题描述 昨天做了套C++笔试题,面试官说从代码看出编程缺经验 忽略字母大小写,下面是我当时写的代码,求各位大婶指教怎么改进不会让人觉得缺经验,或者贴下你的代码,感谢 { if((s1==null)||(s2==null)) exit(1); int c='a'-'A',i=0; char *temps1=s1,*temps2=s2; while(*temps1!='') { int i1=0; while((*temps1==*temps2)||({*temps1+c)==*temps2)||

要出发公司笔试题

前言 招聘高峰期来了,大家都非常积极地准备着跳槽,那么去一家公司面试就会有一堆新鲜的问题,可能不会,也可能会,但是了解不够深.本篇文章为群里的小伙伴们去要出发公司的笔试题,由笔者整理并提供笔者个人参考答案.注意,仅供参考,不代表绝对正确. 参考答案不唯一,大家可以根据自己的理解回答,没有必要跟笔者的一样.参考笔者的答案,也许给你带来灵感! 题目照 1.编程规范问题 这题看不清楚,不过可以看得出来是编程规范问题.所以呢,笔者也就没有办法说明哪些不合理了.不过笔者曾经为公司的出过一个编程规范文档,后

谁有struts2的笔试题和面试题啊????

问题描述 谁有struts2的笔试题[b]和面试题啊????[/b] 解决方案 解决方案二:笔试都一般不考框架知识,考的是基础,考框架也就一些很简单的题目.面试那就范围大了,不好说,拦截器.类型转换.输入校验呀等等......解决方案三:问的多点的就是1与2的区别解决方案四:该回复于2011-03-29 09:58:36被版主删除解决方案五:一个工具而已,有些东西理解了就成,Java基础是王道.解决方案六:楼主给我讲讲struts2对request的请求流程...要详细...解决方案七:恩恩基础

笔试题,难啊!求各位给给建议,谢谢!

问题描述 昨天晚上收到的笔试题,想看看各位的建议,谢谢啊!今天晚上要交了1.你认为程序开发人员的职责是什么,怎样才能充分胜任这一工作2.你认为软件项目中调研.开发.维护的难度分别在哪里,如何解决(谈你自己的看法及经验)3.谈谈以前做过的项目中认为设计得最好的作品,简述流程并阐明原因4.描述一下你最常用的编程风格5.如果要你做公司的形象网站,你会如何着手.阐述你的计划.执行步骤6.现有一热线呼叫系统,数据库名ZZ12345,请按要求用C#(或JAVA)语言编程,并写出相关的类,方法题(1):要求找