编写宏来计算变量和类型的大小

#define sizeof_v(x) (char*)(&x+1)-(char*)(&x)
#define sizeof_t(x) ((size_t)((x*)(0)+1))

//对齐的宏

#define AIGN(v,b) ((v+b-1)&~(b-1))

知识点1:地址相减,得到的是几个元素。

知识点2:可以将0地址强制转换为某一类型的地址。

时间: 2024-08-29 03:27:52

编写宏来计算变量和类型的大小的相关文章

【C#学习笔记】【3】从计算1+1=2开始(变量与类型)

在上节中主要简单的介绍了一下使用环境,以及怎么新建一个项目和解决方案.(有人说我没讲.net framework以及CLR,我认为还不会吃饭呢,就想着做饭,是不是有点早了???)我想问你,俗称的电脑为啥又叫计算机呢?当然,最早是用于大型计算的,那么今天,我们也来先学学怎么用它计算点东西. 变量和类型 学过C语言或者其他的读者,你可以跳过本小节,但是,我还是建议你读完本小节,说不定你会有新的认识. 什么是变量 相信你学过高中数学函数部分,y=f(x),这是一个函数,其中x叫做自变量,y叫做因变量.

JavaScript基础系列(变量与类型)

以下内容将JavaScript简称为JS 变量指的是,可被修改的数据. 变量这一词在所有的程序语言中都是最为关键.最常见的存在,在JS中也不例外,所以要透彻的了解变量就尤其的重要,必须重视,要想深入变量必须先了解数据类型是什么它在我们实际编码中所起到的作用是什么,接下来一一讲解. (这段话给零基础学习的读者)很多初学者会有疑问,变量到底是干嘛的,可以做些什么啊?举一个最简单的例子:你想通过编写代码实现加减乘除的功能,那么首要的前提就是,你必须要有两个数字,但计算机不认识数字,那么就需要通过计算机

怎么确定一个变量的类型

例如 int * p[10] 怎么确定这个变量的类型呢,众所周知,利用sizeof一个变量,和一个变量的类型得到的值应该是相同的. 如下: #include <stdio.h> int main(void) { int * p[10]; printf("%ld %ld\n", sizeof(p),sizeof(int * [10])); //我这里打印出来40(32位系统)告诉我们这应该是一个数组类型 return 1; } 由此函数可以看出打印出来的数据是相同的, int

变量存储类型(auto static extern)

auto 动态存储类型变量(函数内部变量存储默认为 auto型) auto只用于函数内部定义,单片机在执行这个函数时为它分配内存地址,当函数执行完毕返回后,auto变量会被销毁,再次进入这个函数时,它的初值是不确定的,必须对她重新进行初始化.auto变量是局部变量,只允许在定义它的函数内部使用,在函数外的其他地方都不能使用.由于auto变量在定义它的函数以外的任何地方都是不可见的,所以允许在这个函数以外的其他地方或是其他函数内部定义同名的变量,它们之间是不会发生冲突的,因为他们都有自己的区域性,

使用typeid(变量或类型).name()来获取常量或变量的类型---gyy整理

使用typeid(变量或类型).name()来获取常量或变量的类型 <typeinfo>  该头文件包含运行时类型识别(在执行时确定数据类型)的类 typeid的使用   typeid操作符        typeid表达式形如:      typeid(expr): 这里expr是任意表达式或者类型名.如果表达式的类型是类类型且至少包含有一个虚函数,则typeid操作符返回表达式的动态类型,需要在运行时计算:否则,typeid操作符返回表达式的静态类型,在编译时就可以计算. typeid操作

程序猿之---C语言细节28(const变量初始化、数组大小用const变量细节、const变量与#define宏、volatile修饰)

主要内容:const变量初始化.数组大小用const变量细节.const变量与#define宏.volatile修饰 一.const变量初始化时必须赋值 二.const变量在C++中可以做数组大小元素.在C中不行,因为它是变量 三.const和#define区别:内存分配 四.volatile修饰一些变量:易被操纵系统.硬件.多线程修改的变量 #include <stdio.h> int main() { /* 测试1 */ const int b; // 不初始化会报错 // b = 2;

python基础学习(三)变量和类型

变量的作用:变量就是用来存储数据的. 变量的定义 在python中,变量在使用之前需要进行赋值,变量只有赋值后才能使用,如果变量没有赋值就使用会出现什么情况呢?如下图,使用之前变量未定义,会报错,如下: 变量时使用=来进行赋值的 =左边是一个变量名 =右边是值 练习 计算矩形的面积(长为100,高为10的矩形) 使用ipython3 使用PyCharm # 定义矩形的宽度 width = 100 # 定义矩形的高度 height = 10 # 计算面积 print(width * height)

Python的变量以及类型

1.程序是用来处理数据的,变量就是用来存储数据的  num1 = 100 2.为了更充分的利用内存空间以及更有效率的管理内存,变量是有不同的类型 3.怎样知道一个变量的类型呢? 3.1 在python中,只要定义了一个变量,而且它有数据,那么它的类型就已经确定了,不需要咱们开发者主动的去说明它的类型,系统会自动辨别 3.2 可以使用type(变量的名字),来查看变量的类型

快学Scala 第一课 (变量,类型,操作符)

Scala 用val定义常量,用var定义变量. 常量重新赋值就会报错. 变量没有问题. 注意:我们不需要给出值或者变量的类型,scala初始化表达式会自己推断出来.当然我们也可以指定类型. 多个值和变量可以一起声明: Scala 类型:Byte, Char, Short, Int, Long, Float, Double, Boolean Scala不区分基本类型和引用类型(包装类型) Scala StringOps类给字符串追加了上百种操作,所以在"Hello".intersect