摘要: [cpp]view plaincopy#include<stdio.h>inta[2]={1,2};intmain(){printf("a=%p\n",a);//Iprintf("&a=%p\n",&a);//IIprintf("a+1=%p\n",a+1);//IIIprintf("&a+1=%p\n",&a+1);//IVreturn0;}本机(linux)结果输出:a = 0x804a014&a = 0x804a014a + 1 = 0x804a018&am 阅读全文
posted @ 2012-09-30 09:10 holdpassion 阅读(158) 评论(0) 推荐(0)
摘要: 函数指针和指针函数2008-02-27 18:13:14【函数指针】 在程序运行中,函数代码是程序的算法指令部分,它们和数组一样也占用存储空间,都有相应的地址。可以使用指针变量指向数组的首地址,也可以使用指针变量指向函数代码的首地址,指向函数代码首地址的指针变量称为函数指针。1.函数指针定义函数类型 (*指针变量名)(形参列表);“函数类型”说明函数的返回类型,由于“()”的优先级高于“*”,所以指针变量名外的括号必不可少,后面的“形参列表”表示指针变量指向的函数所带的参数列表。例如:int (*f)(int x);double (*ptr)(double x);在定义函数指针时请注意:函数指 阅读全文
posted @ 2012-09-28 22:41 holdpassion 阅读(92) 评论(0) 推荐(0)
摘要: 我们之前已经见过了正则表达式的一些很特殊的用法。这里我们再来看一个:用正则表达式判断数的整除性。例如,下面这个表达式可以匹配01串S当且仅当S是一个可以被3整除的二进制数。^1((10*1)|(01*0))*10*$如果你不信的话,不妨把下面这段代码粘贴进浏览器的地址栏,然后回车运行一下:javascript:alert(/^1((10*1)|(01*0))*10*$/.test("1000000100"))被test的是516的二进制表达。516可以被3整除,因此程序返回true。你可以自己把1000000100换成其它的二进制数试试。但是呢,从这个正则表达式里我们竟看不 阅读全文
posted @ 2012-09-25 22:23 holdpassion 阅读(302) 评论(0) 推荐(0)
摘要: 指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用。但是数组名有些地方又不同于指针。这里将数组名与指针用法的不同做一下总结1、数组名和指向那个数组的指针,地址相同,但大小不同用例子来说明:[cpp]view plaincopy#include"stdafx.h"#include<iostream>usingnamespacestd;int_tmain(intargc,_TCHAR*argv[]){intarr[10]={1,1,1,1,1,1,1,1,1,1};int*p=arr;cout<<arr<& 阅读全文
posted @ 2012-09-24 21:57 holdpassion 阅读(296) 评论(0) 推荐(0)
摘要: 虚函数的作用可以让成员函数操作一般化,用基类的指针指向不同的派生类的对象时,基类指针调用其虚成员函数,则会调用其真正指向对象的成员函数,而不是基类中定义的成员函数(只要派生类改写了该成员函数)。若不是虚函数,则不管基类指针指向的哪个派生类对象,调用时都会调用基类中定义的那个函数。程序1:#i nclude <iostream>using namecpace std;class B0//基类B0声明{ public:void display(){cout<<"B0::display()"<<endl;}//公有成员函数};class B1: 阅读全文
posted @ 2012-09-21 17:36 holdpassion 阅读(219) 评论(0) 推荐(0)
摘要: typedef struct{int a;char b;}A_t;typedef struct{int a;char b;char c;}B_t;typedef struct{char a;int b;char c;}C_t;void main(){char*a=0;cout<<sizeof(a)<<endl;//4cout<<sizeof(*a)<<endl;//1--这个能理解 cout<<sizeof(A_t)<<endl;//8 cout<<sizeof(B_t)<<endl;//8cout 阅读全文
posted @ 2012-09-18 11:44 holdpassion 阅读(295) 评论(0) 推荐(0)