首页 > 杂记3

杂记3

0. const受保护权限

  请看下面的代码片

  int num = 0;

  const int *p = #

  这一段代码在C语言中是可以通过的,因为num在定义的时候没有修饰,所以权限很大,当用*p指向它的时候可以对它进行修改。

  再看下面的代码片:

  const int num = 0;

  int *p = #

  这段代码在C编译器中会报错,原因是,定义num的时候被const修饰,那么这个num就是受保护的,即是num不能随便改变,所以当用*p指向它的时候会报错。

1. printf的返回值

 C语言中printf的返回值是打印在屏幕上的字符的个数。

2. 计算一个数二进制位中1的个数

  这里我们提供第二种方法就是,我们可以使这个数先&1,如果结果是是1,则count++,然后把这个数右移一位,再次&1,这些操作放在一个循环里面,循环32,但是这样做循环了32,如果我只是后几位有1,前面都是0呢,显然这样做的话还不是最优的结果

  下面我们提供第三种方式,int n = 11;n = n&(n-1);这里n&(n-1)实际的操作结果就把原本的n的二进制中的最后一个1消掉了,这就是突破点。我们可以利用这个特点,做一个循环while(n != 0){count++;n=n&(n-1)};这个时候计算的count就是n中1的个数。

3. 数值和0的比较

  整型和0的比较:if(0 == a)

   指针和0的比较:if(NULL == p)

   浮点型和0比较:if(a>-0.000000000000001&&a<0.00000000000000001)

4. 数组名

  int arr[10];

  1.   int sz = sizeof(arr);

  2.   &arr;

只有上面的这两种数组名的使用方式时,arr代表的是整个数组,其余的方式均表示数组首元素的地址。

如:sizeof(arr + 1);它表示的就是数组下标为1的元素。

5. 用联合体测试大小端

请看下面的代码片

    union tag{

        int a;

        char c;

    }tag;

    tag.a = 1;

    printf("%c",tag.c);    //因为在联合体中,a和c使用共同的存储空间,且他们的起始位置一致,所以当给赋值1之后,

                           //如果是小端存储则这个1被放在了高地址,即他们的共同内存中的后面的位置,

                           //这样使用%c打印的时候,是从开始的地方算起,所以就得到一个未知的量

6.memset的使用

  memset(地址,0,sizeof(...))

  地址传入的是一个地址,然后那个0是你要初始化的内容,最后的是长度习惯用sizeof进行求解,这里的长度是以字节为单位的

7.malloc申请空间后判断

pmail->maillist = (PeoInfo*)malloc(sizeof(PeoInfo)*ALLMAX);

    if (NULL == pmail->maillist)

    {

        perror("malloc失败");

        return;

    }

8. 链表操作

 链表中有一些内容不好操作时,比如删除屋头节点的非尾节点,或者在链表前面插入一个元素,想着用赋值操作

9.pmail->maillist = realloc((pmail->maillist), sizeof(PeoInfo)*((pmail->MAX) + 3));

更多相关:

  •         Apache POI是一个开源的利用Java读写Excel,WORD等微软OLE2组件文档的项目。        我的需求是对Excel的数据进行导入或将数据以Excel的形式导出。先上简单的测试代码:package com.xing.studyTest.poi;import java.io.FileInputSt...

  • 要取得[a,b)的随机整数,使用(rand() % (b-a))+ a; 要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a; 要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1; 通用公式:a + rand() % n;其中的a是起始值,n是整数的范围。 要取得a到b之间的...

  • 利用本征图像分解(Intrinsic Image Decomposition)算法,将图像分解为shading(illumination) image 和 reflectance(albedo) image,计算图像的reflectance image。 Reflectance Image 是指在变化的光照条件下能够维持不变的图像部分...

  • 题目:面试题39. 数组中出现次数超过一半的数字 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 输出: 2 限制: 1 <= 数组长度 <= 50000 解题: cl...

  • 题目:二叉搜索树的后序遍历序列 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二叉搜索树:      5     /    2   6   /  1   3示例 1: 输入: [1,6,3,2,5] 输出...

  • 给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小。 注意: num 的长度小于 10002 且 ≥ k。 num 不会包含任何前导零。 示例 1 : 输入: num = “1432219”, k = 3 输出: “1219” 解释: 移除掉三个数字 4, 3, 和 2形成一个新的最小的数...

  • 代码展示:   http://paste.ubuntu.com/23693598/ #include #include #include char * largeDiffer(char *a,char *b){ /*  使用说明 传入的a和b只能为整数 结果为a-b;返回...

  • Description We all know that Bin-Laden is a notorious terrorist, and he has disappeared for a long time. But recently, it is reported that he hides in Hang Zhou of Ch...

  • /*Name: NYOJ--811--变态最大值Author: shen_渊 Date: 17/04/17 15:49Description: 看到博客上这道题浏览量最高,原来的代码就看不下去了 o(╯□╰)o */#include #include #include u...

  • 生成唯一号:思路,根据yymmddhhmmss+自增长号+唯一服务器号( SystemNo)生成唯一码,总长度19,例如:1509281204550000101. public class UniqueNumber {     private static long num = 0;//流水号     private sta...

  • 给定整数 n 和 k,找到 1 到 n 中字典序第 k 小的数字。 注意:1 ≤ k ≤ n ≤ 10^9。 示例 : 输入: n: 13 k: 2 输出: 10 解释: 字典序的排列是 [1, 10, 11, 12, 13, 2, 3, 4, 5, 6, 7, 8, 9],所以第二小的数字是 10。 字典排序数的实现...

  • 找规律题 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 … 2/1 2/2 2/3 2/4 … 3/1 3/2 3/3 … 4/1 4/2 … 5/1 … … 我们以Z字形给上表的每一项编号。第一项是1/1,然后是1/2,2/1,...