当前位置:首页 > 原创 > 振南技术干货集(风云录)
[导读]初学C语言的时候,有一个小编程题我们应该都记得,就是变量互换。

关于变量互换

初学C语言的时候,有一个小编程题我们应该都记得,就是变量互换。

int a,b;

int temp;

temp=a;

a=b;

b=temp;

变量a与b的值互换,在这过程中一定需要一个中间变量temp作为中转。不用这个中间变量能不能实现?请看下面的代码:

int a,b;

a=a+b;

b=a-b;

a=a-b;

可以说上面代码有点小巧妙,那么下面的代码就真正是巧妙了:

int a,b;

a=a^b;

b=a^b;

a=a^b;

异或运算有一个性质叫自反性,这个可以实现很多巧妙的操作,大家可以深入研究一下。(异或位运算比上面的加减法更严谨,因为加减法是可能会溢出的)

关于sizeof

C语言中的sizeof我们应该是非常熟悉的,它的作用就是用来计算一个变量或类型所占用的字节数。

sizeof(int) //如果是32位CPU平台,值为4,即4个字节

int a; sizeof(a) //同上

sizeof(struct ...) //计算某结构体的大小

这个很简单,我们再来看下面的代码:

char *pc="abc";

sizeof(pc) //指针的sizeof等于多少?

sizeof(*pc) //指针指向的单元的sizeof等于多少?

pc用来指向char类型的变量。pc本身是一个指针类型,在32位平台上sizeof(pc)的值为4,即指针类型占用4个字节(与CPU平台有关)。*pc是pc所指向的变量,所以sizeof(*pc)的值为1。

好,还能理解吧,那我们再来看:

char a1[]="abcd";

sizeof(a1) //数组的sizeof等于多少?

void fun(char a1[]) //形参a1的sizeof等于多少?

{

//....

}

第一个sizeof(a1)等于5,因为它是一个数组(最后还有一个字符串结束符’\0’)。第二个sizeof(a1)等于4,形参中的a1不再是一个数组,而是一个指针。

好,下面的实例估计很多人没见到过:

struct {} a,b,c;

sizeof(a) //空结构体的sizeof等于多少?

空结构体类型变量的大小是多少?这个问题似乎有些奇葩,没什么实用性。空结构体有什么用?

这个问题可以揭示一些比较深层的问题,我们平时注意不到。空结构体的大小是1,即占用1个字节。当我们的程序还仅仅是一个框架的时候,一些结构体还只是一个空壳,只是拿一个struct的定义在那占位置而已,此时就涉及到空结构体问题了。通常编译器会给空结构体分配1个字节的内存空间。为什么?如果不分配空间,那程序中的多个同类型结构体变量如何区分呢?比如a、b、c这三个变量,它们必须要被分配到不同的地址上去,各占1个字节的空间。

另外,因为sizeof有一个(),所以很多人想当然的把它当成一个函数。但其实它表达的是一个常数(运算符),它的值在程序编译期间就确定了。比如sizeof(i++),其中i为int类型,那么它的值就是4(32位平台)。

声明:该篇文章为本站原创,未经授权不予转载,侵权必究。
换一批
延伸阅读

近日,2024中关村论坛年会发布了10项重大科技成果名单,其中“转角氮化硼光学晶体原创理论与材料”备受关注。

关键字: 激光

虽然当前内外部市场环境中仍存在着诸多不确定性风险,但半导体行业已经开始逐渐走出谷底,即将开启新一轮的上行周期。而紫光国微,已经为迎接产业复苏做好了准备。

关键字: 紫光国微 特种集成电路 安全芯片

继“特斯拉开启万人大裁员”之后,如今又一家车企扛不住了!

关键字: 电动汽车

2024年4月25日,神经元于北京车展中国芯展区重磅发布了其高性价比车规级Switch芯片“KD6610”。北京神经元网络技术有限公司董事长薛百华针对这两款新品进行了精彩分享。一汽股权投资有限公司战略及投资研究室主任李炜...

关键字: 神经元 Switch KD6610 车规级 TSN

从无处不在的射频技术到为无处不在的应用赋能,Qorvo凭借广泛的产品矩阵和差异化的技术优势,正在满足市场对高功率、高能效、高性能系统的应用需求。

关键字: Qorvo 射频 Wi-Fi 7 BMS 压感交互

当地时间4月22日,ASML宣布已与荷兰埃因霍温市政府签署了一份意向书,计划在该市的北部机场附近进行扩建,届时将可容纳2万名新员工。这或许意味着,其搬离荷兰的计划也将告一段落了。

关键字: ASML 光刻机

上个月,爱立信刚刚传出“对中国区业务进行战略调整,研发岗大面积裁员”的消息。这几天,就有员工确认,爱立信“核心网”成为了此次裁员的“重灾区”。

关键字: 爱立信 通信

SAP(思爱普)近日发出的裁员计划,不仅涉及全球范围内约8000个职位,更是在中国区造成了近1500名正式员工和合同工不续的情况。

关键字: 软件 互联网

近日,Arm推出了Arm® Ethos™-U85神经网络处理器(NPU)和Arm Corstone™-320物联网参考设计平台,旨在满足海量的数据处理和大规模计算,加速推进边缘AI的发展进程。

关键字: ARM

“RISC-V相比较Arm的竞争优势,在AI、数据中心高速运算和高效能运算这些领域,现在来说的话都有深度嵌入。但是相对于像车用MCU以及甚至手机AP这部分,假以时日,RISC-V也会对Arm产生非常大的一个威胁。”

关键字: 晶心科技 Andes RISC-V 向量处理器 矢量计算
关闭