摘要: 曾经碰到过让你迷惑不解、类似于int * (* (*fp1) (int) ) [10];这样的变量声明吗?本文将由易到难,一步一步教会你如何理解这种复杂的C/C++声明。   我们将从每天都能碰到的较简单的声明入手,然后逐步加入const修饰符和typedef,还有函数指针,最后介绍一个能够让你准确地理解任何C/C++声明的“右左法则”。   需要强调一下的是,复杂的C/C++声明并不是好的编程风格;我这里仅仅是教你如何去理解这些声明。注意:为了保证能够在同一行上显示代码和相关注释,本文最好在至少1024x768分辨率的显示器上阅读。 阅读全文
posted @ 2011-06-12 22:54 我是一堆积木 阅读(234) 评论(0) 推荐(0) 编辑
摘要: 我想求教一个问题: : c语言中FLOAT 是如何表示的?尾数,阶码是如何在32位上安排的,即哪几位是 : 尾数,哪几位是阶码,那一位是符号位。听说与CPU有关,是真的吗? 阅读全文
posted @ 2011-06-12 22:51 我是一堆积木 阅读(446) 评论(0) 推荐(0) 编辑
摘要: c++比起c来除了多了类类型外还多出一种类型:引用。这个东西变量不象变 量,指针不象指针,我以前对它不太懂,看程序时碰到引用都稀里糊涂蒙过去。 最近把引用好好地揣摩了一番,小有收获,特公之于社区,让初学者们共享。 引用指的是对一个对象的引用。那么什么是对象?在c++中狭义的对象指的是 用类,结构,联合等复杂数据类型来声明的变量,如 MyClass myclass,CDialo g mydlg,等等。广义的对象还包括用int,char,float等简单类型声明的变量 ,如int a,char b等等。我在下文提到“对象”一词全指的是广义的对象。c++ 的初学者们把这个广义对象的概念建立起来,对看参考书是很有帮助的,因为大 多数书上只顾用“对象”这个词,对于这个词还有广义和狭义两种概念却只字不 提。 阅读全文
posted @ 2011-06-12 22:50 我是一堆积木 阅读(290) 评论(0) 推荐(0) 编辑
摘要: 看下面的例子: 例十七: char s='a'; int *ptr; ptr=(int*)&s; *ptr=1298; 指针ptr是一个int*类型的指针,它指向的类型是int。它指向的地址就是s的 阅读全文
posted @ 2011-06-12 22:46 我是一堆积木 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 当我们初始化一个指针或给一个指针赋值时,赋值号的左边是一个指针,赋 值号的右边是一个指针表达式。在我们前面所举的例子中,绝大多数情况下,指 针的类型和指针表达式的类型是一样的,指针所指向的类型和指针表达式所指向 的类型是一样的。 阅读全文
posted @ 2011-06-12 22:46 我是一堆积木 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 可以把一个指针声明成为一个指向函数的指针。 int fun1(char*,int); int (*pfun1)(char*,int); pfun1=fun1; .... .... int a=(*pfun1)("abcdefg",7);//通过函数指针调用函数。 可以把指针作为函数的形参。在函数调用语句中,可以用指针表达式来作为 实参。 例十三: int fun(char*); int a; char str[]="abcdefghijklmn"; a=fun(str); ... ... int fun(char*s) { int num=0; for(int i=0;istrlen(s);i++ 阅读全文
posted @ 2011-06-12 22:44 我是一堆积木 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 可以声明一个指向结构类型对象的指针。 例十一: struct MyStruct { int a; int b; int c; } MyStruct ss={20,30,40};//声明了结构对象ss,并把ss的三个成员初始 化为20,30和40。 MyStruct *ptr=&ss;//声明了一个指向结构对象ss的指针。它的类型是 MyStruct*,它指向的类型是MyStruct。 int *pstr=(int*)&ss;//声明了一个指向结构对象ss的指针。但是它的 类型和它指向的类型和ptr是不同的。 阅读全文
posted @ 2011-06-12 22:43 我是一堆积木 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 如果对声明数组的语句不太明白的话,请参阅我前段时间贴出的文章。 数组的数组名其实可以看作一个指针。 阅读全文
posted @ 2011-06-12 22:43 我是一堆积木 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 一个表达式的最后结果如果是一个指针,那么这个表达式就叫指针表达式。 下面是一些指针表达式的例子: 例六: int a,b; int array[10]; int *pa; pa=&a;//&a是一个指针表达式。 int **ptr=&pa;//&pa也是一个指针表达式。 *ptr=&b;//*ptr和&b都是指针表达式。 pa=array; pa++;//这也是指针表达式。 阅读全文
posted @ 2011-06-12 22:42 我是一堆积木 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 这里&是取地址运算符,*是...书上叫做“间接运算符”。 &a的运算结果是一个指针,指针的类型是a的类型加个*,指针所指向的类型 是a的类型,指针所指向的地址嘛,那就是a的地址。 *p的运算结果就五花八门了。总之*p的结果是p所指向的东西,这个东西有这 些特点:它的类型是p指向的类型,它所占用的地址是p所指向的地址。 阅读全文
posted @ 2011-06-12 22:41 我是一堆积木 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 指针可以加上或减去一个整数。指针的这种运算的意义和通常的数值的加减 运算的意义是不一样的。例如: 例二: 1。 char a[20]; 2。 int *ptr=a; ... ... 3。 ptr++; 阅读全文
posted @ 2011-06-12 22:39 我是一堆积木 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的 类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让 我们分别说明。 阅读全文
posted @ 2011-06-12 22:39 我是一堆积木 阅读(147) 评论(0) 推荐(0) 编辑