随笔分类 -  C/C++

1

《C和指针》一书介绍操作符优先级
摘要:《C和指针》一书介绍操作符优先级5.4.3 操作符的属性转:http://blog.csdn.net/shoutday/article/details/8275387 每个操作符的所有属性都列在表5.1所示的优先级表中。表中各个列分别代表操作符、它的功能描述、用法示例、它的结果类型、它的结合性以及当它出现时是否会对表达式的求值顺序施加控制。用法示例提示它是否需要操作数为左值。术语lexp表示左值表达式,rexp表示右值表达式。记住,左值意味着一个位置,而右值意味着一个值。所以,在使用右值的地方也可以使用左值,但是在需要左值的地方不能使用右值。 说明:结合性L-R自左向右,R-L自右向左。表.. 阅读全文

posted @ 2013-09-11 11:13 イケメンおっさん_汪汪 阅读(369) 评论(0) 推荐(0)

从sizeof(数组名)/sizeof(数组类型) 简单说说 数组名字 和 指针
摘要:数组名本身是个地址常量,但是某些特殊情况下它的语义可以发生改变。例如sizeof(a),这时a表示整个数组对象(这里指语法对象,不是指类的实例)而不是这个常量本身。基于这个语义,对数组名取地址也是合法的,对于数组a来说&a的结果等于a这个地址常量本身的值。这是C/C++标准委员会为了维护语法对象a作为一个左值(l-value)总可以取地址这条原则的妥协。 1 #include 2 int main(void)3 {4 char str[] = "world";5 char * pstr = "world";6 printf("%d %d 阅读全文

posted @ 2013-08-27 20:39 イケメンおっさん_汪汪 阅读(5137) 评论(0) 推荐(0)

c语言中的增量与减量········不要太聪明
摘要:WARNING: 完全摘自 c primer plus···劝导做,自己的笔记····如果你企图一次使用太多的增量运算符,可能连自己都会弄糊涂。例如,你可能认为你可以改进 squares.c程序 1 /* squares.c --- 产生前 20个整数的平方表 */ 2 3 #include 4 5 int main (void) 6 7 { 8 9 int num = 1;10 11 while (num ){ printf ("%10d %10d\n",num,num*num++); } 这看起来是合 阅读全文

posted @ 2013-08-16 16:38 イケメンおっさん_汪汪

对于 sizeof(char)的一些零碎······
摘要:先看一段简单的c程序 1 #include 2 3 int main(void){ 4 5 char c ='a'; 6 7 printf("the size of 'a' is %d\n",sizeof('a')); 8 printf("the size of c is %d\n",sizeof(c)); 9 printf("the size of char is %d\n",sizeof(char));10 11 return 0;12 }ok,结果如下图: 为啥子· 阅读全文

posted @ 2013-08-14 16:27 イケメンおっさん_汪汪 阅读(205) 评论(0) 推荐(0)

C语言中float,double等类型,在内存中的结构
摘要:从存储结构和算法上来讲,double和float是一样的,不一样的地方仅仅是float是32位的,double是64位的,所以double能存储更 高的精度。 任何数据在内存中都是以二进制(0或1)顺序存储的,每一个1或0被称为1位,而在x86CPU上一个字节是8位。比如一个16位(2 字节)的short int型变量的值是1000,那么它的二进制表达就是:00000011 11101000。由于Intel CPU的架构原因,它是按字节倒 序存储的,那么就因该是这样:11101000 00000011,这就是定点数... 阅读全文

posted @ 2013-08-14 16:15 イケメンおっさん_汪汪

数据结构
摘要:学习C语言,是简单的学习了C语言的语法以及简单的算法和程序。C语言是面向过程的语言,所以我们更加专注算法的设计,以及算法在程序上的具体实现。之前,我们没有系统的介绍数据的封装,数据结构让我们系统的了解数据是如何封装和组织的。首先,我们来考虑这样一个事情,如何利用数据描述一样事物。比如说,在做的各位同学,我们如何把诸位的信息存储到计算机上。一个学生的信息有哪些?学生的姓名,年龄,性别,学号等等。我们使用结构体的形式来封装这些信息,也就是说,自定义一个类型,用这个类型来描述学生。我们把学生的很多基本信息封装到student这个自定类型里面,使用的时候,只要对学生的信息分别初始化就可以了。方法一:方 阅读全文

posted @ 2013-07-28 15:17 イケメンおっさん_汪汪

C++的数据类型,防忘
摘要:1 /*============================= 2 类型 字节 范围 */ 3 char 1 -128到126 4 5 unsigned char 1 0到255 6 7 short 2 -32,768到32,767 8 9 unsigned short 2 0到65,535 10 ... 阅读全文

posted @ 2013-06-05 11:31 イケメンおっさん_汪汪

一点琐碎的指针和引用
摘要:看薛老师视频,看对象存储内容,有下面代码grand obj;grand *ptr_g = &obj;int *ptr = (int*)ptr_g;这里为什么用了2个指针? 因为第一个ptr_g是指向对象的指针,只能定义为“grand”类型,类指针只能通过类生成的对象来使用!!!! 然后(int *)强制类型转换,通过定义2个相同的指针,来达到我们的目的,因为第一个不能用 1 #include<iostream> 2 using namespace std; 3 class A{ 4 5 public: A(){cout<<"constructor a& 阅读全文

posted @ 2013-05-15 21:17 イケメンおっさん_汪汪

C++中类中的静态成员变量和静态成员函数的作用(二)
摘要:二、面向对象的 static 关键字(类中的 static 关键字)1、静态数据成员在类内数据成员的声明前加上关键字 static,该数据成员就是类内的静态数据成员。先举一个静态数据成员的例子。//Example 5 1 //Example 5 2 #include <iostream.h> 3 class Myclass 4 { 5 public: 6 Myclass(int a,int b,int c); 7 void GetSum(); 8 private: 9 int a,b,c;10 static int Sum;//声明静态数据成员11 };... 阅读全文

posted @ 2013-04-23 10:33 イケメンおっさん_汪汪

C++类中的静态成员变量和静态成员函数的作用 (一)
摘要:参考资料:http://blog.chinaunix.net/uid-14114479-id-3035143.html http://www.cnblogs.com/lzjsky/archive/2011/01/24/1943199.html 数据成员可以分静态变量、非静态变量两种. 静态成员:静态类中的成员加入 static 修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员不能访问非静态的成员..因为静态成员存在于内存,所以非静态成员可以直接访问类中静态的成员. 非成静态员... 阅读全文

posted @ 2013-04-23 10:18 イケメンおっさん_汪汪

(转)C++ 一般类型与变量
摘要:c++ 数据类型不算很多但很复杂,学好C++的关键我认为是要熟练掌握其常用数据类型,废话少说上菜! c++ 数据类型大概可以分为:内置类型,标注库类型(或者说是类类型),内置类型大致来说是能够转换为数字的类型包括 bool ,char ,wchar_t,short,int long,float,double,long double这么几类,和其他高级语言很类似,只是根据机器不同有些类型的取值范围(或者说是存放的字节长度)不一样。需要特别说明的是wchar_t,它叫宽字符类型,是对标准字符型的扩展,因为标准字符型占一个字节,但是有些扩展字符不是这样,比如一个汉字需要占用两个字节,但单汉字确实也属 阅读全文

posted @ 2013-04-19 17:15 イケメンおっさん_汪汪

关于默认的构造函数
摘要:一、首先看一下JAVA中默认构造函数的作用。 创建一个子类的对象实例的时候,必先调用父类的无参数的构造函数(默认构造函数),假如父类有带参数的构造函数,那么系统将不会给它创建无参数的构造函数,这时,子类在实例化的时候,因为找不到父类的默认构造函数,编译器将会报错,但如果在子类的构造函数中指定用父类的带参数的构造函数的时候,或者在父类中加一个无参数的构造函数,就不会报错。=============================================我们假设A是B的父类,B是A的子类。1、如果程序员没有给类A没有提供构造函数,则编译器会自动提供一个默认的无参数的构造函数,如果用户... 阅读全文

posted @ 2013-04-13 16:15 イケメンおっさん_汪汪

总结几种结构体初始化方法 (转)
摘要:结构体能自由组装数据,是一种很常见的数据打包方法。当我们定义一个结构体后,没有初始化就使用,就会使用到垃圾数据,而且这种错误很难发现。对于定义的任何变量,我们最好都先初始化。除了使用memset和ZeroMemory之外,有没有更简单的方法初始化呢?因为有时候每定义一个结构体,就使用一次memset,也会觉得很繁琐。我这里总结三种方法,如果大家有什么好的方法,不妨加上去。1、结构体的构造函数中初始化。2、继承模板类初始化3、定义时初始化在C++中,结构体与类在使用上已没有本质上的区别了,所以可以使用构造函数来初始化。如下代码所示:struct Stu{intnNum;boolbSex;char 阅读全文

posted @ 2013-04-05 16:07 イケメンおっさん_汪汪

wsprintf 中的几点注意
摘要:具体用法http://baike.baidu.com/view/849487.htm。 涉及到:C语言字符串格式化显示:http://www.cnblogs.com/iceocean/articles/1594206.html 1、例:wsprintf(szPort, L"COM%d:", portNo);这句话什么意思啊? szPort是一个字符串变量,内容是串口号 portNo是一个整型变量,用来保存端口号 wsprintf(szPort, L"COM%d:", portNo); 就是把portNo变量的端口号转化为字符串表示,格式为COM* 如果p 阅读全文

posted @ 2013-03-20 21:09 イケメンおっさん_汪汪

c中的赋值运算符
摘要:http://www.slyar.com/blog/c-operator-priority.html = 赋值运算符 变量=表达式 如:a=3;将a的值赋为3 +=表示加赋值运算符。如,a+=b等价于a=a+b. 一=表示减赋值运算符。如,a一=b等价于,a=a-b. *=表示乘赋值运算符。如,a*=b等价于a=a*b. /=表示除赋值运算符。如,a=b等价于a=a/b. %=表示取余赋值运算符。如,a% =b等价于a=a%b. &=表示位与赋值运算符。如,a&= b等价于a =a&b. |=表示位或赋值运算符。如,a|=b等价于a=a|b. -=表示位异或赋值运算符。 阅读全文

posted @ 2013-03-16 16:39 イケメンおっさん_汪汪

DOS实模式下六种编译模式概述
摘要:Turbo C 提供了六种编译模式。编译模式有时也称为寻址模式或内存模式,因为它处理的就是如何在内存中为程序,数据,堆栈分配空间并存取它们,这六种模式是:微模式tiny,小模式small, 紧凑模式compact,中模式medium,大模式large,巨模式huge。它们之间的关系如下表所示。 │ 小程序 │ 大程序 ━━━━┿━━━━━━┿━━━━━━━━ 小数据 │ 微,小 │ 中 大数据 │ 紧凑 │ 大,巨 所谓小程序就是只有一个程序段,当然不超过64K 字节,缺省的码(函数)指针是near。所谓大程序就是有多个程序段,每个程序段不超过64K字节,但... 阅读全文

posted @ 2013-03-15 21:37 イケメンおっさん_汪汪

C语言之详解#ifdef等宏及妙用
摘要:读μc/os-ii 中文教程 “1.03”定义全局变量有感 阅读全文

posted @ 2013-03-15 19:51 イケメンおっさん_汪汪

C++中的结构体
摘要:结构体成员默认是public;类的成员默认是private;结构体里面定义函数后,就成了类。使用上基本是一样的,结构体一样可以继承。结构体内部是数据;类内部基本是函数操作。 有些信息在存储时,并不需要占用一个完整的字节,而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1两种状态,用一位二进位即可。为了节 省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域,并说明每个 区域的位数。每个域有一个域名,允许在程序中按域名进行操作。这样就可以把几个不同的对象用一个字节的二进制位域来表示。一、位域的定义... 阅读全文

posted @ 2013-03-14 15:41 イケメンおっさん_汪汪

c++中 -> 和 ::
摘要:首先介绍一下C语言中的结构。对于一个结构来说,struct MyStruct {int member_a;};如果有个变量MyStruct s,那么使用其中的成员元素时可以用s.member_a = 1;如果采用指针方法访问,比如MyStruct * ps,那么同样的访问必须用箭头号:ps->member_a = 1;::只用在类成员函数和类成员变量中。比如,声明一个类:class CA {public:int ca_var;int add(int a, int b);int add(int a);};那么在实现这个函数时,必须这样书写:int CA::add(int a, int b) 阅读全文

posted @ 2013-03-11 10:49 イケメンおっさん_汪汪

Activex、OLE、COM、OCX、DLL之间的区别(转)
摘要:熟悉面向对象编程和网络编程的人一定对ActiveX、OLE和COM/DCOM这些概念不会陌生,但是它们之间究竟是什么样的关系,对许多们还是比较模糊的。在具体介绍它们的关系之间,我们还是先明确组件(Component)和对象(Object)之间的区别。组件是一个可重用的模块,它是由一组处理过程、数据封装和用户接口组成的业务对象(Rules Object)。组件看起来像对象,但不符合对象的学术定义。它们的主要区别是:1)组件可以在另一个称为容器(有时也称为承载者或宿主)的应用程序中使用,也可以作为独立过程使用;2)组件可以由一个类构成,也可以由多个类组成,或者是一个完整的应用程序;3)组件为模块重 阅读全文

posted @ 2013-02-21 15:26 イケメンおっさん_汪汪

1

导航