c语言基础笔试坑点

1、#define N 5 + 5

  求 k = N*N*5

  错误解法:10*10*5 = 500

  正解(重点:注意黄色部分):5 + 5 * 5 + 5 * 5 = 55

2、死锁的必要条件:

   1、相互排斥使用(资源独占)

    一个资源每次仅仅能给一个进程使用

   2、不可强占(不可剥夺)
       资源申请者不能强行的从资源占有者手中夺取资源,资源仅仅能由占有者自愿释放

   3、请求和保持(部分分配,占有申请)
     一个进程在申请新的资源的同一时候保持对原有资源的占有(仅仅有这样才是动态申请,动态分配)

   4、循环等待
    存在一个进程等待队列
       {P1 , P2 , … , Pn},
       当中P1等待P2占有的资源,P2等待P3占有的资源,…,Pn等待P1占有的资源,形成一个进程等待环路

3、地址偏移:

   int arr[6] = { 1,2,3,4,5,9};

   偏移一个地址:     

    int *p = (int *)( &arr[0]+1);

   整体偏移:

    int *p = (int *)( &arr + 1);

  printf("%d %d\n", *(arr+1), *( p ) );

4、陷阱(进制间转换)

  unsigned long *p2;
  p2 = ( unsigned long *)0x709000;
  printf("  p2 +5 = %p , p2 = %p\n", p2 +5, p2 );

  答案: 0x709028, 0x709000

  

原文地址:https://www.cnblogs.com/dcli-blog/p/11735499.html

时间: 2024-07-31 19:32:39

c语言基础笔试坑点的相关文章

[C/C++基础--笔试突击] 7.指针与引用

概述: 比较抽象的但又很有用的东西 0.0 void*指针:可以保存任何类型对象的地址. 指向指针的指针 函数指针 7.1 指针 一个有效的指针必然是一下三种状态之一: 1)保存一个特定对象的地址: 2)指向某个对象后面的另一个对象 3)0值. 若指针保存0值,表明它不指向任何对象.未初始化的指针是无效的,直到给该指针赋值后,才可使用. 注:*p++和(*p)++不等价,单目运算符*的优先级比++高,故*p++先完成取值操作,然后对指针地址执行++操作,而(*p)++是首先执行屈指操作,然后对该

《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(下)

索引: 一.SQL Server的体系结构 二.查询 三.表表达式 四.集合运算 五.透视.逆透视及分组 六.数据修改 七.事务和并发 八.可编程对象 五.透视.逆透视及分组 5.1 透视 所谓透视(Pivoting)就是把数据从行的状态旋转为列的状态的处理.其处理步骤为: 相信很多人在笔试或面试的时候被问到如何通过SQL实现行转列或列转行的问题,可能很多人当时懵逼了,没关系,下面我们通过例子来理解. (1)准备数据 --1.0准备数据 USE tempdb; IF OBJECT_ID('dbo

[C/C++基础--笔试突击] 5.C预处理器、作用域、static、const、内存管理

概述: C预处理器处理程序的源代码,在编译器之前运行,通常以符号#开头. 还会涉及到static.const的知识点...有的和java类同...有的容易混淆T.T. 本章很多以前都没有接触过,在笔试中见过...如果有什么错误,欢迎指正~~ 5.1 C预处理器 C语言的预处理主要有三个方面的内容: 1)宏定义与宏替换: 2)文件包含: 3)条件编译. 考点比较少,讲述一下对应需要注意的地方. 宏替换的本质很简单--文本替换.关于宏定义与宏替换请注意一下几点: 1)宏名一般用大写,宏名和参数的括号

D10——C语言基础学PYTHON

C语言基础学习PYTHON--基础学习D10 20180906内容纲要: 1.协程 (1)yield (2)greenlet (3)gevent (4)gevent实现单线程下socket多并发 2.简单爬虫 3.select 4.IO多路复用 5.小结 6.练习 1 协程 协程又叫微线程,纤程.协程是一种用户态的轻量级线程.协程有自己的寄存器上下文和栈.协程调度切换时,将寄存器上下文.和栈保存到其他地方,在切换回来的时候回复先前保存的寄存器上下文和栈.协程能保存上一次调用时的状态.一个cpu支

Oracle SQL语言基础及环境准备_超越OCP精通Oracle视频教程培训26

Oracle SQL语言基础及环境准备_超越OCP精通Oracle视频教程培训26 本课程介绍: Oracle视频教程,风哥本套oracle教程培训是<<Oracle数据库SQL语言实战培训教程>>的第1/5套:SQL语言之基础入门及环境准备.主要学习Oracle数据库SQL语言基础介绍.PL/SQL语言介绍.数据库SQL对象与数据类型介绍.SQL语言实战环境准备等. Oracle SQL语言之基础及环境准备,课程内容详细如下: Oracle数据库SQL语言基础介绍Oracle数据

Swift语言指南(一)--语言基础之常量和变量

Swift 是开发 iOS 及 OS X 应用的一门新编程语言,然而,它的开发体验与 C 或 Objective-C 有很多相似之处. Swift 提供了 C 与 Objective-C 中的所有基础类型,包括表示整数的 Int,表示浮点数的 Double 与 Float,表示布尔值的 Bool,以及表示纯文本数据的 String. Swift 还为两个基本集合类型 Array 与 Dictionary 提供了强大的支持,详情可参考 (集合类型)Collection Types. 与 C 语言类

02 java语言基础

常量:字面值常量(字符串,字符,整数,小数,布尔,null),自定义常量,''这个不是字符常量,""这个是字符串常量 进制: 02.01_Java语言基础(常量的概述和使用)(掌握) A:什么是常量 在程序执行的过程中其值不可以发生改变 B:Java中常量的分类 字面值常量 自定义常量(面向对象部分讲) C:字面值常量的分类 字符串常量 用双引号括起来的内容 整数常量 所有整数 小数常量 所有小数 字符常量 用单引号括起来的内容,里面只能放单个数字,单个字母或单个符号 布尔常量 较为特

嵌入式 Linux C语言——C语言基础

嵌入式 Linux C语言--C语言基础 一.数据类型 1.基本数据类型 数据类型是创建变量的模型.变量名是连续存储空间的别名,程序中使用变量命名存储空间,通过变量可以使用存储空间.变量所占的内存大小取决于创建变量的数据类型. 2.有符号和无符号 有符号数中数据类型的最高位用于标识数据的符号,最高位为1表示为负数,最高位为0表示为正数. 计算机中有符号数通常使用补码表示,正数的补码为正数本身,负数的补码为负数的绝对值的各位取反后加1. 计算机中无符号数通常使用原码表示,无符号数默认为正数,没有符

C#语言基础

第一部分 了解C# C#是微软公司在2000年7月发布的一种全新且简单.安全.面向对象的程序设计语言,是专门为.NET的应用而开发的.体现了当今最新的程序设计技术的功能和精华..NET框架为C#提供了一个强大的.易用的.逻辑结构一致的设计环境.其特点: 语言简洁 保留了C++的强大功能: 快速应用开发功能: 语言的的自由性: 强大的Web服务器控件: 支持跨平台: 与XML相融合: 第二部分 C#语言基础: 一.C#项目的组成结构: 1.项目后缀 .config——配置文件(存放配置参数文件)