- 博客(8)
- 收藏
- 关注
原创 指针的怨念
#include using namespace std; struct S { int i; int *p; }; void main() { S s; int *p = &s.i; /*指针p存储了s.i的地址*/ p[0] = 4; /* s.i的地址上存储的值为4,即i =4*/ p[1] = 3; /* p+1的地址即是s.p,这里是在s.p中存入了地址3*/ c
2015-10-15 22:12:20
387
原创 C语言中参数执行顺序及a++与++a实现的区别
首先结论:(1)void func(int a, int b, int c, int d)中参数按dcba,即从右至左的顺序依次入栈。 (2)printf("%d, %d\n",(a++)*a,a+=2)中从右至左依次计算。 即使(1)(2)情况下,参数都是从右到左的依次被执行。 (3)a++先使用a的值再自增,产生临时变量,++a先自增再使用新的a的值,不产生临时变量。
2015-10-11 21:42:09
3018
原创 约瑟夫环
自定义循环链表实现 #include using namespace std; struct Node { int num; Node *next; }; int JosephuProblem(int n, int m) { if(n<1 || m<1) return -1; Node *head = new Node(); Node *current = head; f
2015-10-09 16:25:23
315
转载 char 型 127+1后的结果
首先,说下结论,这里由于各种平台的规定不同,对char的默认类型可能不同(unsigned和signed), 所以也有人认为结果不能确定。这里主要要说的是PC上常见的把char默认为signed char的情况,如VS中,运行一遍你会发现结果是-128. 但是8位的signed char型,除去符号位1位,如何表示-128,这里计算机把它拓展成16位,最后再截断取后8位。 -128 原码 1
2015-10-09 11:19:53
3335
原创 非排序寻找从小到大第3400个数
题目:有10000个正整数,每个数的取值范围均在1到1000之间,变成找出从小到大排在第 3400(从0开始算起)的那个数,将此数的值返回,要求不使用排序实现。
2015-10-02 16:41:12
1472
原创 运行环境大小端测试
所谓大端机,小端机,主要是根据机器对长字节的数字存储方式的特点 大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放; 小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部
2015-10-02 14:18:14
387
原创 C语言结构体内存对齐问题
结构体在存储时,如果没有特别设置,会默认以结构体成员中,占用字节最大的成员为单位开辟内存,如下面程序 #include using namespace std; //#pragma pack(1) struct CAT_s { int ID; char Color; char test; char test1; //char test2; unsigned shor
2015-10-02 13:52:49
858
转载 C语言编程需要注意的64位和32机器的区别
一、数据类型特别是int相关的类型在不同位数机器的平台下长度不同。C99标准并不规定具体数据类型的长度大小,只规定级别。作下比较: 16位平台 char 1个字节8位 short 2个字节16位 int 2个字节16位 long 4个字节32位 指针 2个字节 32位平台
2015-09-30 21:22:52
471
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人