【题目】零值比较--BOOL,int,float,指针变量与零值比较的if语句。

(首先给个提示:题目中要求的是零值比较,而非与0进行比较,在C++里“零值”的范围可就大了,可以是0, 0.0 , FALSE或者“空指针”。)

(1)int型变量 n 与“零值”比较的 if 语句就是:

if ( n == 0 )
if ( n != 0 )

如下写法均属不良风格.
if ( n ) // 会让人误解 n 是布尔变量
if ( !n )

(2)请写出BOOL flag与“零值”比较的if语句:

if ( flag )
if ( !flag ) 如下写法均属不良风格。
if (flag == TRUE)
if (flag == 1 )
if (flag == FALSE)
if (flag == 0)

(3)请写出 float x与“零值”比较的if语句。

千万要留意,无论是float 还是double 类型的变量,都有精度限制,都不可以用“==”或“!=”与任何数字比较,应该设法转化成“>=”或“<=”形式。
假设浮点变量的名字为x;

其中EPSINON 是允许的误差(即精度)。

const float EPSINON = 0.00001;
if ((x >= - EPSINON) && (x <= EPSINON) 如下是错误的写法。
if (x == 0.0)
if (x != 0.0)

(4)请写出 char *p 与“零值”比较的 if 语句。

if (p == NULL)
if (p != NULL) 如下写法均属不良风格。
if (p == 0) // 容易让人误解p是整型变量
if (p != 0)
if (p) // 容易让人误解p是bool型变量
if (!p)

【题目】以下为Linux下的32 位C 程序,请计算sizeof的值。

char  str[] = “Hello” ;
char *p = str ;
i nt n = 10;

请计算
(1)sizeof (str ) =
(2)sizeof ( p ) =
(3)sizeof ( n ) =

答案:6 ,  4 ,   4


【题目】用变量a 给出下面的定义
(e) 一个有10个指针的数组,该指针是指向一个整型数的;
(f) 一个指向有10个整型数数组的指针;
(g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数;
(h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数;

【标准答案】
(e)int * a[10];
(f)int (*a)[10]
(g)int (*a)(int);
(h) int (*a[10])(int)


【题目】请问以下代码有什么问题:

char* s="AAA";
printf("%s",s);
s[0]='B';
printf("%s",s);
有什么错?

【答案】

"AAA" 是字符串常量。s是指针,指向这个字符串常量,所以声明s的时候就有问题。
cosnt char* s="AAA";
然后又因为是常量,所以对是s[0] 的赋值操作是不合法的。


【题目】c和c++ 中的struct有什么不同?
【答案】

c和c++ 中struct的主要区别是c中的struct不可以含有成员函数,而c++ 中的struct可以。c++ 中
struct和class的主要区别在于默认的存取权限不同,struct默认为public ,而class默认为private;


【题目】 以下会出现什么问题?打印结果是是多少?

void main()
{
char aa[10];
printf(“%d”,strlen(aa));
}

【答案】
sizeof()和初不初始化,没有关系;
strlen()和初始化有关,打印结果值未知。


【题目】头文件中的ifndef/define/endif 干什么用?

【答案】

防止该头文件被重复引用。


【题目】#include <filename.h>和#include “filename.h”有什么区别?

【答案】
对于#include <filename.h> ,编译器从标准库路径开始搜索filename.h ;
对于#include “filename.h”,编译器从用户的工作路径开始搜索filename.h 。


【题目】const有什么用途?(请至少说明两种)
【答案】:

(1)可以定义const 常量
(2)const 可以修饰函数的参数、返回值,甚至函数的定义体。被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。


【题目】如何引用一个已经定义过的全局变量?
【答案】可以用引用头文件的方式,也可以用extern 关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变量写错了,那么在编译期间会报错,如果你用extern 方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。


【题目】用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)

【答案】

#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL


C语言经典面试题的更多相关文章

  1. 【转载】经典10道c/c++语言经典笔试题(含全部所有参考答案)

    经典10道c/c++语言经典笔试题(含全部所有参考答案) 1. 下面这段代码的输出是多少(在32位机上). char *p; char *q[20]; char *m[20][20]; int (*n ...

  2. C语言经典面试题 与 C语言面试宝典

    1 预处理 问题1:什么是预编译?何时需要预编译? 答: 预编译又称预处理,是整个编译过程最先做的工作,即程序执行前的一些预处理工作.主要处理#开头的指令.如拷贝#include包含的文件代码.替换# ...

  3. 约瑟夫环问题分析-C语言经典面试题

    好久没有看有关算法的问题了,今天废了不少劲,再感叹一句:要想学好算法就要常练习,没什么捷径可走.废话不多说,如下: 问题描述:有m个人,围成一个环,编号为 0.1.2.3...m-1,从第一个人开始循 ...

  4. C 语言经典面试题 —— 宏

    1. 运算符优先级与括号 #define Cube(a) a*a*a 无法解决 Cube(1+1) ⇒ 1+1*1+1*1+1 ⇒ 4,期待的应当是 8,故将其改造为 #define Cube(a) ...

  5. C语言程序猿必会的内存四区及经典面试题解析

    前言: 为啥叫C语言程序猿必会呢?因为特别重要,学习C语言不知道内存分区,对很多问题你很难解释,如经典的:传值传地址,前者不能改变实参,后者可以,知道为什么?还有经典面试题如下: #include & ...

  6. 李洪强iOS经典面试题156 - Runtime详解(面试必备)

    李洪强iOS经典面试题156 - Runtime详解(面试必备)   一.runtime简介 RunTime简称运行时.OC就是运行时机制,也就是在运行时候的一些机制,其中最主要的是消息机制. 对于C ...

  7. 李洪强iOS经典面试题153- 补充

    李洪强iOS经典面试题153- 补充   补充 有空就来解决几个问题,已经懒癌晚期没救了... UML 统一建模语言(UML,UnifiedModelingLanguage)是面向对象软件的标准化建模 ...

  8. 李洪强经典面试题152-Runtime

    李洪强经典面试题152-Runtime   Runtime Runtime是什么 Runtime 又叫运行时,是一套底层的 C 语言 API,其为 iOS 内部的核心之一,我们平时编写的 OC 代码, ...

  9. 李洪强iOS经典面试题144-数据存储

    李洪强iOS经典面试题144-数据存储   数据存储 sqlite中插入特殊字符的方法和接收到处理方法. 除'其他的都是在特殊字符前面加"/",而 ' -> '' .方法:k ...

随机推荐

  1. HTML基础复习3

    CSS 可以理解为对HTML的一种补充 CSS由两部分组成:选择器.声明,声明中包含属性和值 CSS中的选择器 HTML标签选择器 类选择器 在标签上使用class属性为标签起个类名,在CSS中使用. ...

  2. Python 身份证校验代码

    Python 身份证校验代码 居民身份证bai编号识别 1.身份证编码规则如下:根据[中华人民共和国国家标准GB11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本 ...

  3. Samba共享工具安装

    Samba 是一种在局域网上共享文件的一种通信协议,它为局域网内的不同计算机之间提供文件的共享服务. (1)下载并安装 Samba 工具. 确定 Ubuntu 已连接到互联网, 执行如下命令下载 Sa ...

  4. Python編碼格式錯誤解決方案及案例

    Python格式錯誤解決方案及案例 這幾天在玩爬蟲,在解析和提取内容時經常出現由於内容格式問題導致出錯,為防止以後出錯,整下一下,以下是這幾天的總結: 1. 特殊符號或表情符號等 背景:爬取一個烹飪教 ...

  5. Group by 优化

    一个标准的 Group by 语句包含排序.分组.聚合函数,比如 select a,count(*) from t group by a ;  这个语句默认使用 a 进行排序.如果 a 列没有索引,那 ...

  6. 【算法】数位 dp

    时隔多日,我终于再次开始写博客了!! 上午听了数位 dp,感觉没听懂,于是在网上进行一番愉 ♂ 快 ♀ 的学习后,写篇博来加深一下印象~~ 前置的没用的知识 数位 不同计数单位,按照一定顺序排列,它们 ...

  7. P5686 和积和

    写在前面 数学题接触的少,卡了半下午,愣是没想到直接往前缀和上考虑,按元素强推莽了半下午 Description 直接跳转到题目去啊 Solution 记 \(A,B\) 的前缀和序列分别为 \(sA ...

  8. 硬核!八张图搞懂 Flink 端到端精准一次处理语义 Exactly-once(深入原理,建议收藏)

    Flink 在 Flink 中需要端到端精准一次处理的位置有三个: Source 端:数据从上一阶段进入到 Flink 时,需要保证消息精准一次消费. Flink 内部端:这个我们已经了解,利用 Ch ...

  9. js截取+全部替换+字符串

    //将关键字标志显示到页面中 function showKeyWord(showStr) { var keyword = $("#keyword").val();//页面中的关键字 ...

  10. C语言--指针数组大小

    #include <stdio.h> #include <string.h> int main(void) { char *str[3]={ "Hello,thisi ...