![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c
天空之城B哥
这个作者很懒,什么都没留下…
展开
-
错在哪~
# include # include void input(struct student * , int );void output(struct student *, int);void sort(struct student * , int );int main(void){int len;struct student * p;struct student原创 2013-09-29 21:16:37 · 546 阅读 · 0 评论 -
Big Endian与Little Endian区别
共同体存放的顺序是所有成员都从低#includeint main(){union _UnionTest{unsigned int i;unsigned char ch[2];};_UnionTest uniontest;uniontest.i = 0x1420;printf("%d\t%d\n", uniontest.ch[0], un转载 2014-11-02 17:39:04 · 670 阅读 · 0 评论 -
c 整数转字符串
int iValue;//整型数char sz[10];//字符串sprintf(sz, "%d", iValue);//这句需要头文件#include /*或者*/itoa(iValue, sz, 10); //这句需要头文件#include ctype.h>sprintf类似于printf,printf比sprintf少第一个参数,就是直接在输出界面输出相应的东西,而sprintf就转载 2014-09-24 12:04:28 · 1043 阅读 · 0 评论 -
new malloc
1,malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。 2, 对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加转载 2014-09-24 19:59:32 · 401 阅读 · 0 评论 -
delete后仍然可以调用问题
#include class ClassOne{public:int i;void SetValue(){i = 1000;}void PrintValue(){cout}public:ClassOne(){ i = 100;}virtual ~ClassOne(){}};void原创 2014-10-19 21:00:37 · 501 阅读 · 0 评论 -
strlen和sizeof的区别
一、sizeof sizeof(...)是运算符,而不是一个函数。 一个简单的例子:int a;cout 在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。 它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。 由于在编译时计算,因此sizeof不能用来返回动态分配的转载 2014-10-20 18:14:43 · 316 阅读 · 0 评论 -
struct求大小补充
一、什么是对齐,以及为什么要对齐:1. 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。2. 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只原创 2014-11-02 15:34:52 · 510 阅读 · 2 评论 -
__attribute__((packed))详解 2013-02-01 17:25:45 分类: LINUX __attribute__((packed))详解
1. __attribute__ ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐,是GCC特有的语法。这个功能是跟操作系统没关系,跟编译器有关,gcc编译器不是紧凑模式的,我在windows下,用vc的编译器也不是紧凑的,用tc的编译器就是紧凑的。例如:在TC下:struct my{ char ch; int a;} sizeof(in转载 2014-11-02 14:21:18 · 404 阅读 · 0 评论 -
数组 sizeof不同情况
# include# includevoid f(int a[][3]){printf("%d\n", sizeof(a));//4//数组作为函数参数传入时,将失去数组的特性,退化成为一个普通指针。,可以a++}int main(){int a[2][3]={{101,102,103},{104,105,106}};printf("%d\n", sizeof(a)原创 2014-11-01 19:20:58 · 400 阅读 · 0 评论 -
C语言 编译 链接 过程
1.1.预处理的功能 在集成开发环境中,编译,链接是同时完成的。其实,C语言编译器在对源代码编译之前,还需要进一步的处理:预编译。预编译的主要作用如下:●将源文件中以”include”格式包含的文件复制到编译的源文件中。●用实际值替换用“#define”定义的字符串。●根据“#if”后面的条件决定需要编译的代码。原创 2014-09-28 21:58:31 · 525 阅读 · 0 评论 -
C语言 杂常识
1、1KB=2的10次方B1MB=2的10次方KB=2的20次方B1GB=2的10次方MB=2的20次方KB=2的30次方B原创 2014-09-28 10:26:56 · 439 阅读 · 0 评论 -
C语言位运算符及作用:与、或、异或、取反、左移和右移
一、& 按位与如果两个相应的二进制位都为1,则该位的结果值为1,否则为0应用:(1)清零若想对一个存储单元清零,即使其全部二进制位为0,只要找一个二进制数,其中各个位符合一下条件:原来的数中为1的位,新数中相应位为0。然后使二者进行&运算,即可达到清零目的。a 00101011b 10010100c 00000000 //c = a & b(2)取一个数中某些指转载 2014-09-28 11:51:01 · 2172 阅读 · 0 评论 -
深入 char * ,char ** ,char a[ ] ,char *a[] 内核
C语言中由于指针的灵活性,导致指针能代替数组使用,或者混合使用,这些导致了许多指针和数组的迷惑,因此,刻意再次深入探究了指针和数组这玩意儿,其他类型的数组比较简单,容易混淆的是字符数组和字符指针这两个。。。下面就开始剖析一下这两位的恩怨情仇。。。 1 数组的本质 数组是多个元素的集合,在内存中分布在地址相连的单元中,所以可以通过其下标访问不同单元的元素。。 2 指针。转载 2014-09-27 18:42:12 · 354 阅读 · 0 评论 -
struct 求大小
结构体中的成员可以是不同的数据类型,成员按照定义时的顺序依次存储在连续的内存空间。和数组不一样的是,结构体的大小不是所有成员大小简单的相加,需要考虑到系统在存储结构体变量时的地址对齐问题。看下面这样的一个结构体: struct stu1 { int i; char c; int j; }; 先介绍一个相关的概念——偏移量。偏移量原创 2014-09-27 20:28:03 · 1008 阅读 · 2 评论 -
C语言中main函数的参数
我们经常用的main函数都是不带参数的。因此main 后的括号都是空括号。实际上,main函数可以带参数,这个参数可以认为是 main函数的形式参数。C语言规定main函数的参数只能有两个, 习惯上这两个参数写为argc和argv。因此,main函数的函数头可写为: main (argc,argv)C语言还规定argc(第一个形参)必须是整型变量,argv( 第二个形参)必须是指向字符串的指针数组转载 2014-09-22 16:50:32 · 1012 阅读 · 0 评论 -
C++语言问题集
http://blog.163.com/rjwhh@126/blog/static/2333770720080116393274/1、 在C语言中,要定义一个结构变量,就要在结构类型前面加上struct,而在C++则就不用重复关键字struct。如果在C语言中要这样做,必须使用typedef进行类型的重命名。2、 用cout输出时,如果是字符串指针,则输出字符串转载 2014-10-16 17:56:29 · 437 阅读 · 0 评论