当前位置:首页 > 原创 > 振南技术干货集(风云录)
[导读]初学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位平台)。

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

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭