验证的代码:

 #include <stdio.h>
int main(){ char c = 'z';
int num = ('Z' << ) + (c << ) + ('A' << ) + 'a'; printf("'Z'=0x%x c=0x%x 'A'=0x%x 'a'=0x%x\n", 'Z', c, 'A', 'a');
printf("num=0x%x\n", num); printf("\nsizeof(int)=%d sizeof(char)=%d\n", sizeof(int), sizeof(char));
printf("\nsizeof(num)=%d sizeof(c)=%d\n", sizeof(num), sizeof(c)); void *pv = &num;
char *ch = (char *)pv;
printf("num\t地址0x%x\n", &num);
printf("%c\t地址0x%x\n", *ch, ch); ++ch;
printf("%c\t地址0x%x\n", *ch, ch); ++ch;
printf("%c\t地址0x%x\n", *ch, ch); ++ch;
printf("%c\t地址0x%x\n", *ch, ch);
return ;
}

运行结果:

1、通过运行结果,我通过位运算<<将字符'Z' 'z' 'A' 'a'的顺序拼接到整数变量num中,从打印的sizeof(num)=4个字节,sizeof(char)=1个字节,表示一个整形变量可以拼接4个字符。

2、为了能让char*指针能访问int变量的地址,我们先用void*指针pv直线整形num的地址,然后再将pv强制转换赋值给char*指针变量ch(合法的操作,因为void*能转换成别的指针类型)

3、查看地址,通过++ch指针,打印地址,(1)发现一个整形变量是由4块连续内存存储的,(2)每块内存大小是1个字节(地址是连续的),(3)整形的最高8在地址中是最后一块。

4、通过这个例子,可以很好的理解,为什么swap函数可以交易两个相同类型元素的值。

自己写一个swap函数交换任意两个相同类型元素的值 对空指针的使用 字节大小的判断(二)了解原理的更多相关文章

  1. 请写一个php函数,可以接受任意数量的参数

    请写一个php函数,可以接受任意数量的参数 这是一道面试题.怎么写这个函数呢? function fun(......) { } ----------------------------------- ...

  2. 自己写一个strcmp函数(C++)

    题目说明: 写一个函数,实现两个字符串的比较.即自己写一个strcmp函数,函数原型为int strcmp( char * p1, char * p2); 设p1指向字符串s1,p2指向字符串s2.要 ...

  3. 写一个PHP函数,实现扫描并打印出指定目录下(含子目录)的所有jpg文件名

    写一个PHP函数,实现扫描并打印出指定目录下(含子目录)的所有jpg文件名 <?php $dir = "E:\照片\\";//打印文件夹中所有jpg文件 function p ...

  4. 函数bsxfun,两个数组间元素逐个计算的二值操作

    转自http://www.cnblogs.com/rong86/p/3559616.html 函数功能:两个数组间元素逐个计算的二值操作 使用方法:C=bsxfun(fun,A,B) 两个数组A合B间 ...

  5. 前端面试题:不使用loop循环,创建一个长度为100的数组,并且每个元素的值等于它的下标,,怎么实现好?

    昨天,看这道题,脑子锈住了,就是没有思路,没看明白是什么意思?⊙﹏⊙|∣今天早上起床,想到需要思考一下这个问题. 当然,我没想明白为什么要这样做?(创建一个长度为100的数组,并且每个元素的值等于它的 ...

  6. 用swap函数交换两个整数

    #include<stdio.h> //头文件 main() //主函数 { void swap(int *p,int *q); //声明 int a,b; //定义两个整数 int *p ...

  7. JavaScript 自己写一个 replaceAll() 函数

    JavaScript 的  replace()  方法可以在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串. 但是,只输入字符串的话,仅替换第一个字符,当然也可以用正则表达式来进行 ...

  8. 依据ECMA规范,手写一个bind函数

    Function.prototype.bind 函数,参见ECMA规范地址 如题,这次来实现一个boundFunction函数,不挂载在Function.prototype上,而是一个单独声明的函数. ...

  9. 为LoadRunner写一个lr_save_float函数

    LoadRunner中有lr_save_int() 和lr_save_string() 函数,但是没有保存浮点数到变量的lr_save_float函数.<lr_save_float() func ...

随机推荐

  1. 我的jQuery源码读后感

    (function(window, undefined) { // 构造jQuery对象 var jQuery = (function() { var jQuery = function(select ...

  2. jquery控制radio选中

    好久没写jquery了,昨天下午写一个效果,结果倒腾了半天还是没有解决,好在今天早上在网上询问到解决方法了,现在果断记录下. 要实现的效果就是交易方式选择时不同的交易方式下默认选中第一个选项. 如下: ...

  3. 基础知识:Q&A

    1.点乘几何意义? >0,a,b同向,=1时,方向完全相同 =0,垂直 <0,反向,=-1时,方向完全相反 2.叉乘几何意义?叉乘得到的向量的方向怎么确定? aXb ,可以得到 同时垂直于 ...

  4. [转]as3中的SharedObject的保存路径

    SharedObject的保存路径 Windows XP 网络访问: C:\Documents and Settings\[你的用户名]\Application Data\Macromedia\Fla ...

  5. 李洪强iOS经典面试题141-报错警告调试

    李洪强iOS经典面试题141-报错警告调试   报错警告调试 你在实际开发中,有哪些手机架构与性能调试经验 刚接手公司的旧项目时,模块特别多,而且几乎所有的代码都写在控制器里面,比如UI控件代码.网络 ...

  6. 访问本地json文件因跨域导致的问题

    我使用jquery的getJSON的方法获取本地的json文件,并进行操作,获取json 数据代码如下: $.getJSON("invite_panel.json",functio ...

  7. 那些年一起用过的iOS开发利器[4月2号更新]

    4月2号新增Runscope. Runscope 这是一家专注于API工具开发的公司,其创始人John Sheehan曾就职于IFTTT和Twilio.Runscope是一款集调试.测试于一身的网络服 ...

  8. Jvascript简介

    一.Javascript就是我们所说的脚本语言.它不同于C++/java等语言,它更加灵活! 正因为其灵活性,没有那么多的规章制度,也是我们容易学的地方,但很多时候也是 令人无奈的地方! 二.我们要知 ...

  9. Windows 7 常用快捷键

    常用的快捷键 Win键+D 回到桌面/当前界面(切换)Win键+M 回到桌面Win键+E 资源管理器Win键+R 运行 Win键+U 控制面板->所有控制面板项->轻松访问中心 Win键+ ...

  10. awk之特征相同行的合并 ~转

    awk之特征相同行的合并 文本: 1001  hisk01 1001  hisk02 1001  hisk03 1002  hisk04 1002  hisk05 1002  hisk06 1003 ...