当前位置: 首页 > news >正文

100条经典C语言题第一天(1-10)

        准备复习一下C语言,刷一些和面试相关的问题。

        

  1. 请填写 bool, float, 指针变量 与 “零值”比较的if语句                                                         A.Bool flag  与 “零值”比较的if语句 1为true 0为false

        分析  这里的flag 是布尔类型的变量

        标准的写法是 if(flag) 或者 if(!flag)  

        (If(flag == true)也能实现效果,但是写法赘余,不规范)

        B.请写出float x 与 “零值”比较的if语句

        标准的写法:

        Const float EPSINON = 0.00001;

        If((x>=-EPSINON) && x<=EPSINON)

        注:不可用将浮点数用==或者!=与数字进行比较,应该转换成>=或<=

        (如果你检查是否严格等于0,可以if(x==0.0f),但是由于精度问题,不推荐)

  

        C.请写出char *p与零值比较的if语句

        标准答案 if( p == NULL)  if(P!=NULL)

        这里是判断指针是否指向空

2.以下为Linux下的32为C程序,请计算sizeof的值

Char str[] = “Hello”;

Char *p = str;

Int n  =10;

请计算 sizeof(str)  sizeof(p)  sizeof(n)

标准答案:6: 五个字符+空自符, 4 ,  4

Void Func (char str[100]){

....;

}

请计算 sizeof(str) = 4

在C语言中,当你将数组作为函数参数传递时,它会被当作指针来处理。因此,在函数Func内部,sizeof(str)并不会返回整个数组的大小(即100),而是返回指针的大小。

指针的大小是4字节(对于32位系统)或8字节(对于64位系统)。

Void *p = malloc(100);

请计算sizeof(p) = 4

当你使用malloc函数分配内存时,你得到的是一个指向所分配内存块的指针。在C语言中,指针的大小通常不依赖于它所指向的内存块的大小。

3.用变量a 给出下面的定义
e) 一个有10个指针的数组,该指针是指向一个整型数
的;  int *a[10] 整数指针的数组
f)  一个指向有10个整型数数组的指针; int (*a)[10] 指向整数数组的指针
g) 一个指向函数的指针,该函数有一个整型参数并返
回一个整型数;
h) 一个有10个指针的数组,该指针指向一个函数,该
函数有一个整型参数并返回一个整型数;
【标准答案】e)int *  a[10];      f)int (*a)[10]                                 
g)int (*a)(int);   h) int (*a[10])(int)

4.设有以下说明和定义:
typedef u nion {long i; int k[5]; char c;} DATE;
struct data { int cat; DATE cow; double dog;} too;
DATE max;
则语句printf("%d",sizeof(struct date)+sizeof(max)); 的
执行结果是:_____
【标准答案】DATE是一个union, 变量公用空间.  里面最
大的变量类型是int[5],  占用20个字节.  所以它的大小是
20
data 是一个struct,  每个变量分开占用空间.  依次为int4 + 
DATE20 + double8 = 32.
所以结果是20 + 32 = 52.
当然... 在某些16位编辑器下, int 可能是2字节,那么结果
是int2 + DATE10 + double8 = 20

5.以下代码的问题

int main()
{
char a;
char *str=&a;
strcpy(str,"hello");
printf(str);
return 0;
}

问题:

缓冲区溢出:char a; 只分配了一个字符的空间,但是 strcpy(str, "hello"); 试图将五个字符(加上一个空字符 '\0')复制到这块内存。这会导致超出分配的内存范围,覆盖相邻的内存区域。

7.请问以下代码有什么问题:
char* s="AAA";
printf("%s",s);
s[0]='B';
printf("%s",s);
有什么错?
【标准答案】"AAA" 是字符串常量。s是指针,指向这个
字符串常量,所以声明s的时候就有问题。
cosnt char* s="AAA";
然后又因为是常量,所以对是s[0] 的赋值操作是不合法
的。

8.int (*s[10])(int)  表示的是什么啊
【标准答案】int (*s[10])(int)  函数指针数组,每个指针
指向一个int func(intp aram) 的函数。

9.c和c++ 中的struct有什么不同?
【标准答案】c和c++ 中struct的主要区别是c中的struct
不可以含有成员函数,而c++ 中的struct可以。c++ 中
struct和class的主要区别在于默认的存取权限不同,
struct默认为public ,而class默认为private

10、void getmemory(char *p)
{
p=(char *) malloc(100);
strcpy(p,“hello world”);
}
int main( )
{
char *str=NULL;
getmemory(str);
printf(“%s/n”,str);
free(str);
return 0;
} 会出现什么问题?
【标准答案】程序崩溃,getmemory中的malloc 不能返回
动态内存,free ()对str操作很危险。

相关文章:

  • 静态时序分析:SDC约束命令set_clock_transition详解
  • 网络原理-TCP_IP(6)
  • 交通管理|交通管理在线服务系统|基于Springboot的交通管理系统设计与实现(源码+数据库+文档)
  • 云计算基础-虚拟化概述
  • 【Linux】指令 【scp】
  • 07-k8s中secret资源02-玩转secret
  • 【Linux】指令 【whereis】
  • 7.JS里表达式,if条件判断,三元运算符,switch语句,断点调试
  • 嵌入式Qt Qt中的信号处理
  • 定点数,定点数二维向量,定点数三维向量,定点数数学类
  • C语言——oj刷题——获取月份天数
  • 蓝桥杯第十四届电子类单片机组程序设计
  • 动态规划--->背包问题理论基础(二维dp)
  • Linux-SSH被攻击-解决方案
  • 结构体详解
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • C++11: atomic 头文件
  • HTTP中GET与POST的区别 99%的错误认识
  • JAVA 学习IO流
  • MYSQL 的 IF 函数
  • Odoo domain写法及运用
  • Python 基础起步 (十) 什么叫函数?
  • V4L2视频输入框架概述
  • Webpack 4x 之路 ( 四 )
  • 从0到1:PostCSS 插件开发最佳实践
  • 从PHP迁移至Golang - 基础篇
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 老板让我十分钟上手nx-admin
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 物联网链路协议
  • 系统认识JavaScript正则表达式
  • 你对linux中grep命令知道多少?
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • Linux权限管理(week1_day5)--技术流ken
  • 数据库巡检项
  • ​520就是要宠粉,你的心头书我买单
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • #Java第九次作业--输入输出流和文件操作
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (007)XHTML文档之标题——h1~h6
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (C)一些题4
  • (C++17) std算法之执行策略 execution
  • (ros//EnvironmentVariables)ros环境变量
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (搬运以学习)flask 上下文的实现
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • .NET : 在VS2008中计算代码度量值
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .net 提取注释生成API文档 帮助文档
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?
  • @transactional 方法执行完再commit_当@Transactional遇到@CacheEvict,你的代码是不是有bug!...
  • @vue/cli 3.x+引入jQuery
  • [ 数据结构 - C++] AVL树原理及实现
  • [8-27]正则表达式、扩展表达式以及相关实战