小端和整型存储
1.如何用程序判断自己的机器是大端还是小端?
通常情况下,我们的计算机都是小端存储模式。
小端:数字的低位存储到内存的低地址上。
大端:数字的低位存储到内存的高地址上。
我们在 VS 中创建一个临时变脸
int a = 0x11223344;// 十六进制数
然后打开调试器,看到变量 a 在内 ...
指针进阶
指针进阶
目录
[TOC]
前言
指针的概念
指针就是个变量,用来存放地址,地址唯一标识一块内存空间。
指针的大小是固定的4/8个字节(32位平台/64位平台)。
指针是有类型,指针的类型决定了指针的±整数的步长,指针解引用操作的时候的权限。
1、字符指针
字符串的 数组 与 指针 表示 ...
那些关于函数我们容易忽略的基础知识
相信在学校同学们看谭老师的教材的时候已经对函数有了“初步的认识”。
但是,如果你没有理解下面这几个例子,那并不能说你对函数入门了。
1.为什么要声明函数?
#include<stdio.h>void swap();int main() { int a = 0; ...
这些关于数组的基础知识点你都知道吗
各位同学,你觉得你数组学会了吗?不妨看看下面的问题,你能看一眼程序就回答上来吗?
引子:观察下面的程序,这个程序有安全隐患吗?
#include<stdio.h>int main() { int x = 0; double sum = 0; int numbe ...
01 词法陷阱
【C 陷阱与缺陷 】(一)词法陷阱
一 内容
0. =不同于==
当程序员本意是作比较运算时,却可能无意中误写成了赋值运算。
1.本意是检查 x 与 y 是否相等:
if(x = y) break;
实际上是将 y 的值赋值给了 x ,然后再检查该值是否为 0 。
2.本意是跳过文件中的空白 ...
03 语义陷阱
【C 陷阱与缺陷】(三)语义陷阱
0. 指针与数组
C 语言中数组与指针这两个概念之间的联系密不可分。
关于数组:
C 语言中只有一维数组,而且数组大小必须在编译期就作为一个常数确定下来。数组元素可以是任何类型的对象,也可以是另外一个数组。(C99 允许变长数组)
对于一个数组,我们只能够做两 ...
04 连接
【C 陷阱与缺陷】(四)连接
一 链接
0. 什么是连接器
C 语言的一个重要思想就是分别编译(separate compilation),即若干个源程序可以在不同的时候单独进行编译,然后在恰当的时候整合在一起。但是,连接器一般是与 C 编译器分离的,它不可能了解 C 语言的诸多细节。
**连接器 ...
05 库函数
[C 陷阱与缺陷] (五) 库函数
C语言中没有定义输入/输出语句,任何一个有用的 C 程序(起码必须接受零个或多个输入,生成一个或多个输出)都必须调用库函数来完成最基本的输入和输出操作。ANSI C 标准毫无疑问地意识到了这一点, 因而定义了一个包含大量标准库函数的集合。从理论上说,任何一个 ...
06 预处理器
[C 陷阱与缺陷] (六) 预处理器
一 预处理器
在严格意义上的编译过程开始之前,C 语言预处理器首先对程序代码作了必要的转换处理。因此,我们运行的程序实际上并不是我们所写的程序。预处理器使得编程者可以简化某些工作,它的重要性可以由两个主要的原因说明(当然还有一些次要原因,此处就不赘述了) ...
02 语法陷阱
【C 陷阱与缺陷 】(二)语法“陷阱”
零
0. 理解函数声明
请思考下面语句的含义:
(*(void(*)())0)()
前面我们说过 C 语言的声明包含两个部分:类型和类似表达式的声明符。
最简单的声明符就是单个变量:
float f, g;
由于声明符和表达式的相似,我们可以在声明符中任意使用 ...