博文

彻底搞定C指针-函数名与函数指针(2005-10-14 23:35:00)

摘要: 函数名与函数指针

一 通常的函数调用
    一个通常的函数调用的例子:
//自行包含头文件
void MyFun(int x);    //此处的申明也可写成:void MyFun( int );

int main(int argc, char* argv[])
{
   MyFun(10);     //这里是调用MyFun(10);函数

      return 0;
}

void MyFun(int x)  //这里定义一个MyFun函数
{
   printf(“%d\n”,x);
}
    这个MyFun函数是一个无返回值的函数,它并不完成什么事情。这种调用函数的格式你应该是很熟悉的吧!看主函数中调用MyFun函数的书写格式:
MyFun(10);
    我们一开始只是从功能上或者说从数学意义上理解MyFun这个函数,知道MyFun函数名代表的是一个功能(或是说一段代码)。
    直到——
    学习到函数指针概念时。我才不得不在思考:函数名到底又是什么东西呢?
    (不要以为这是没有什么意义的事噢!呵呵,继续往下看你就知道了。)

二 函数指针变量的申明
    就象某一数据变量的内存地址可以存储在相应的指针变量中一样,函数的首地址也以存储在某个函数指针变量里的。这样,我就可以通过这个函数指针变量来调用所指向的函数了。
    在C系列语言中,任何一个变量,总是要先申明,之后才能使用的。那么,函数指针变量也应该要先申明吧?......

阅读全文(65923) | 评论:38

C++中获得当前系统时间 (2005-10-14 21:55:00)

摘要://方案— 优点:仅使用C标准库;缺点:只能精确到秒级 #include <time.h>
#include <stdio.h> int main( void )
{
    time_t t = time( 0 );
    char tmp[64];
    strftime( tmp, sizeof(tmp), "%Y/%m/%d %X %A 本年第%j天 %z",localtime(&t) );
    puts( tmp );
    return 0;
} //方案二 优点:能精确到毫秒级;缺点:使用了windows API #include <windows.h>
#include <stdio.h> int main( void )
{
 SYSTEMTIME sys;
 GetLocalTime( &sys );
 printf( "%4d/%02d/%02d %02d:%02d:%02d.%03d 星期%1d\n",sys.wYear,sys.wMonth,sys.wDay,sys.wHour,sys.wMinute,sys.wSecond,sys.wMilliseconds,sys.wDayOfWeek);
  return 0;
} //方案三,优点:利用系统函数,还能修改系统时间 #include<stdlib.h>
#include<iostream> using namespace std;
void main()
{
    system("time");
} //方案四,将当前时间折算为秒级,再通过相应的时间换算即可 #include<iostream>
#include<ctime>
using namespace std......

阅读全文(16741) | 评论:2

彻底搞定C指针-指向另一指针的指针 (2005-10-06 23:24:00)

摘要:                                     指向另一指针的指针

一. 回顾指针概念:
早在本系列第二篇中我就对指针的实质进行了阐述。今天我们又要学习一个叫做指向另一指针地址的指针。让我们先回顾一下指针的概念吧!
当我们程序如下申明变量:
short int i;
char a;
short int * pi;
程序会在内存某地址空间上为各变量开辟空间,如下图所示。
内存地址→6     7      8     9     10     11    12    13     14    15
-------------------------------------------------------------------------------------
…  |     |      |      |      |      |    &nbs......

阅读全文(4669) | 评论:0

最新新闻:美军进攻北京,惨败!(搞笑篇)(2005-10-01 02:00:00)

摘要:美军参谋长联席会议主席在美国国会所作的总结:这次失败不仅是战略上的失败,更是战术上的失败。   一.我军大意地使用了北京市旅游局的北京旅游图和北京公交公司的北京交通图以及北京地质勘探中心的北京地形图。我们错误的以为中国人给自己用的东西虽然算不上好,但决不会欺骗自己人,然而我们错了。拿到这几张地图的第一天就注定了我们将要在一个错误的时间一个错误的地点和一个错误的国家打一场错误的战争。   1.原本要降落在清华大学的101空降师506团3营被错误的空降到颐和园昆明湖中,会水的投降,不会水的淹死,533人无一逃脱。   2.第十山地师在攻占云冈地区后,按原计划执行破坏中国航空集团第三研究院的命令,一团一营在云冈镇搜索了将近一天也未找到中航集团三院的确切位置,不得以增加部署整个一团加入搜索,使得部队未能完成作战预案。主力部队在度过永定河时,由于空降部队未能按时将舟桥部队运抵,不得以在渡河地点停留了7小时,在舟桥部队到达后才发现所谓的永定河根本没有水。而一团到撤退时才知道他们在航天三院的大院里整整转了四天!   3.陆战三师的重型装甲集群在突破中国守军二十六军阵地后从八达岭高速突入北京市郊,在五环路和八达岭高速交界处遇到在美国前所未见的大堵车,在长达15小时的时间内未能前进一步,被中国人的增援部队击溃。   4.降落在老屯的101师502团伞兵选择小区规划图上绿地、会所、游泳池、湖泊降落。结果当他们落地后发现:他们都落在楼顶上,因为开发商擅自更改规划,把原先承诺的绿地会所游泳池湖泊都起了楼以图多卖点钱。更悲惨的是这些该死的小区规划让倒霉的伞兵伞降着陆时死伤无数。幸存伞兵在楼顶与民兵隔着天窗枪战一宿,大部战死。   5.唯一在四环内空降的101师501团降落在了朝阳公园,那是四环内唯一一片有空地的地方。空降后发现该地区地势崎岖完全称不上空地,空降的重装备无法运出公园,只得放弃原作战计划,固守公园等待救援。他们是本次战役中第一支被成建制俘虏的部队。   6.打巷战时,我们使用的房地产商作为广告宣传的户型图严重失真,所有户型内部空间狭小到了令人恐惧的地步,重型武器均无法运入战前选为要塞的房间;且房屋强度严重不足,无法作为战斗用掩体。   7.特别值得一提的是海豹突击队突袭安贞大厦时,特种部队的小伙子们沿消防通道突击,不想消防通道被物业公司封堵或改做他......

阅读全文(3716) | 评论:2

C++的iostream标准库介绍(1)(2005-09-25 13:47:00)

摘要:                                                 作者:管宁 我们从一开始就一直在利用C++的输入输出在做着各种练习,输入输出是由iostream库提供的,所以讨论此标准库是有必要的,它与C语言的stdio库不同,它从一开始就是用多重继承与虚拟继承实现的面向对象的层次结构,作为一个c++的标准库组件提供给程序员使用。   iostream为内置类型类型对象提供了输入输出支持,同时也支持文件的输入输出,类的设计者可以通过对iostream库的扩展,来支持自定义类型的输入输出操作。   为什么说要扩展才能提供支持呢?我们来一个示例。 #include  
#include <iostream> 
using namespace std;     
 
class Test 

    public: 
        Test(int a=0,int b=0) 
        { 
            Test::a=a;  ......

阅读全文(3647) | 评论:1

C++的iostream标准库介绍(2)(2005-09-25 13:41:00)

摘要:接下来我们继续看一下C++风格的串流控制,C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件。 istringstream类用于执行C++风格的串流的输入操作。
  stringstream类同时可以支持C++风格的串流的输入输出操作。
  strstream类同时可以支持C风格的串流的输入输出操作。   istringstream类是从istream(输入流类)和stringstreambase(c++字符串流基类)派生而来,ostringstream是从ostream(输出流类)和stringstreambase(c++字符串流基类)派生而来,stringstream则是从iostream(输入输出流类)和和stringstreambase(c++字符串流基类)派生而来。   他们的继承关系如下图所示:   istringstream是由一个string对象构造而来,istringstream类从一个string对象读取字符。
  istringstream的构造函数原形如下:
  istringstream::istringstream(string str); //程序作者:管宁 
//站点:www.cndev-lab.com 
//所有稿件均有版权,如要转载,请务必著名出处和作者 
#include <iostream> 
#include <sstream> 
using namespace std; 
int main()  

istringstream istr; 
istr.str("1 56.7",); 
//上述两个过程可以简单写成 istringstream istr("1 56.7"); 
cout << istr.str(......

阅读全文(3226) | 评论:1

C++的iostream标准库介绍(3)(2005-09-25 13:37:00)

摘要:C语言提供了格式化输入输出的方法,C++也同样,但是C++的控制符使用起来更为简单方便,在c++下有两中方法控制格式化输入输出。
  1.有流对象的成员函数。
  例如,下列程序以成员函数的方式控制输出的精度: //程序作者:管宁 
//站点:www.cndev-lab.com 
//所有稿件均有版权,如要转载,请务必著名出处和作者 
 
#include <iostream> 
using namespace std;   
   
int main()    
{   
    float pi=3.14159f; 
    cout<......

阅读全文(3294) | 评论:1

李 敖 语 录(2005-10-27 16:01:00)

摘要:◆小人物与大人物
 我常常怀疑我是小人物,因为我常常忘记自己是大人物。

◆ 衣食足了又如何?
「管子」说:「衣食足而知荣辱。」但在国民党统治下,人民已经无耻得「衣食足而不知荣辱」了。

◆ 无知与写作
国民党统治下匹夫匹妇的无知,常常缩小了我的写作范围。

◆ 蚂蚁
蚂蚁绝不因有食蚁兽就不奋斗。它们永远若无其事,奋斗不懈。

◆ 斗争敌友
对敌人,要永远斗争;对朋友,要间歇斗争。

◆ 报仇不能靠上帝
上帝给你两只手的意思是:报仇不能靠他,你要亲自动手。

◆ 激浊而不扬清
我在台湾,激浊而不扬清,因为无清可扬。

◆ 打击魔鬼
我的特色是打击魔鬼,不怕麻烦,是为产品;从麻烦中找银子与乐子,是为副产品。

◆ 「不知为不知」真义
我总觉得孔夫子「不知为不知,是知也」,这句话被人翻错了。正确的翻译应该是:「对不必知道的知识保持继续不知道,才是有知的表现。」

◆ 更真与更假
新女性妄想比真实更真,结果呢,她比虚伪更假。

◆ 西施眼里
情人眼里出西施,西施眼里出自己。

◆ 婚姻看法
女人对婚姻的看法只有一种;男人对婚姻的看法却有一千零一种。

◆ 了解与爱
男人对女人应多一点爱、少一点了解;女人对男人应多一点了解、少一点爱。

◆ 臭皮匠与诸葛亮
「叁个臭皮匠,胜过诸葛亮。」在皮革业中和皮鞋店中,这是真理。

◆ 独裁与民主之别
独裁的统治者是一个人做十个人的工作;民主的统治者是十个人做十个人的工作。

◆ 「走大路」与「走大陆」
国民党以正大光明自居,口号是「开大门,走大路」。其实它是最不敢「开大门」的。一开了大门,「走大路」未成,「走大陆」倒是真的。

◆ 富而好「礼」
国民党鼓吹「建立一个富而好礼的社会」,其实此「礼」乃礼物之礼也、红包之礼也。

◆ 喊「狼来了!」
「狼来了!」的次数喊得太多的结果是:谁也不相信他,他也不相信他。

◆ 笨人的可怕处
笨人的可怕不在其笨,而在其自作聪明。 ......

阅读全文(4772) | 评论:1

一个很牛的计算pi的c程序(2005-09-23 14:29:00)

摘要:#include <stdlib.h>  
#include <stdio.h>  

long a=10000,b,c=2800,d,e,f[2801],g;  

main()  
{  
for(;b-c;)  
  f[b++]=a/5;  
for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a)  
  for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);  
}  

计算结果:  
31415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931......

阅读全文(4324) | 评论:1

彻底搞定C指针-变量的内存实质(2005-09-23 14:21:00)

摘要:
一.先来理解C语言中变量的实质
要理解C指针,我认为一定要理解C中“变量”的存储实质,所以我就从“变量”这个东西开始讲起吧!
先来理解理解内存空间吧!请看下图:

内存地址→  6      7       8      9       10      11      12      13
----------------------------------------------------------------------------
··· |       |       |       |       |       |       |       |       |··
---------------------------------------------------------------------------

如图所示,内存只不过是一个存放数据的空间,就好像我的看电影时的电影院中的座位一样。每个座位都要编号,我们的内存要存放各种各样的数据,当然我们要知道我们的这些数据存放在什么......

阅读全文(6791) | 评论:5