1.指向const对象的指针
我们可以通过指针来修改其所指对象的值,但如果指针指向的是const对象,则不允许使用指针来改变其所指的const值。C++要求指向const对象的指针也是const类型。
const double *pd; //可以指向一个const double类型。
这里的const限定的是pd所指的对象,而不是pd。这里的pd是可以重新指向另外的一个地址的,但不允许使用pd来改变所指向对象的值。
把一个const对象的地址赋给非const对象的指针会导致编译时错误,例如:
const int a=8;
int *p=&a; //error
const int *cp=&a; //ok
不能使用void*指针保存const对象的地址,可以使用const void*类型的指针保存con st类型的地址。
允许把非const对象的地址赋值给指向const对象的指针:
int c=3;
cp=&c;
虽然c不是const类型,但是使用cp修改c的值会导致编译错误。cp被定义为指向c onst对象的指针,那么cp就不能改变其所指对象的值。
指向const对象的指针所指的对象不一定是const对象,所以不能保证所指的对象的值不可更改,应为毕竟其所指的对象可以是非const对象,可以使用其他方法更改其值。
可以把指向const对象当做“自以为指向const对象的指针”来理解。
在实际的应用中,指向const对象的指针常用作函数的形参,这样可以保证在函数中不会应为形参改变实参所指的对象。
2.const指针
const指针是指该指针不可改变。
int num=4;
int *const p=#
可以把p理解为p是指向int类型的const指针。这就意味着不能使p指向其他对象,任何试图给p赋值的操作导致编译错误。const指针必须在编译时初始化。
该指针是const并不代表就不能修改其所指对象的值。如果const指针指向非const对象,那么就可以使用该指针修改所指对象的值,例如
int e=9;
int *const p=&e;
*p=6;
这样,e的值被修改为6.
还有一种指向const对象的const指针,如下使用:const int d=4;
const int *const p=&d;
这样p的值不能修改,p指向对象的值也不能修改
C++测试(指针) 学号姓名成绩 一、选择题(每题1.5分,共24分) 1.语句int a=10,*point=&a;其值不为地址。 A. point B. &a C. &point D. *point 2.若p为指针变量,y为变量,则y = *p++;的含义是 A.y=*p;p++ B.y=(*p)++ C.y=p;p++ D.p++;y=*p 3.语句char str[]=?visual C++?;char *p=str;则p的值为 A. ?visual C++? B.str的首地址 C. \n D.?v? 4.设有说明语句char *s[]={?student?,?Teacher?,?Father?,?Month?}, *ps=s[2];执行语句:cout<<*s[1]<<’,’<
常见标点符号的用法归纳 一、常见的标点符号 标点符号是辅助文字记录语言的符号,是书面语的有机组成部分,用来表示停顿、语气以及词语的性质和作用。常见的标点符号有16种,分为点号和标号两大类。 1、点号 点号的作用在于点断,主要表示说话时的停顿和语气。点号又分为句内点号和句外点号。句内点号用在句内,表示句内各种不同性质的停顿,有顿号(、)、逗号(,)、分号(;)、冒号(:)4种;句末点号用在句末,表示句末的停顿,有句号(。)、问号(?)、叹号(!)3种。 各种点号的停顿时间的长短排列如下:、﹤,﹤:;﹤。?! 2、标号 标号的作用在于标明,主要标明语句的性质和作用。常见的标号有9种,即:引号(“”)、括号(())、破折号(——)、省略号(……)、着重号(.)、连接号(—)、间隔号(.)、书名号(《》)和专名号(____) 二、常见标点符号的用法归纳 1、顿号(句子内部并列词语或短语的停顿) 1) 数字并列表省略时用顿号,表概数时不用顿号。 如:三年级二、三班的同学今天下午劳动两三节课。 (表省略)(表概数) 2)停顿较短的并列成分(如:锅碗瓢盆交响曲)或集合词语(如:工农兵中小学生公安干警)之间不用顿号。 3)并列词语之间带有“啊”“哇”“啦”“呀”等语气助词时不用顿号,改用逗号。 如:妈妈经常给我讲她纺线啊,织布啊,做军鞋啊。 4)并列的分句做句子的成分时,使用顿号;各自独立成句时则使用逗号。 如:难道说工期紧、任务重、难度大,就可以不顾工程的质量而随意改变设计方案吗?(作句子的成分) 今年春季,这个省……改道工程,任务重,工程难,规模大。 (各自独立成句) 5)如果大的并列成分里包含着小的并列成分时,那么大并列用逗号,小并列用顿号。 如:克隆羊、克隆牛的诞生,“神舟的五号的发射、回收,标示着我国科学发展的新水平。 小并列大并列小并列 2、逗号(略) 3、分号(复句内部并列分句的停顿) 1)复句内并列分句的停顿使用分号。 如:如实地反映客观事物,反映正确就是客观的;反之,就是不科学的。(前后正反对照,构成并列,当使用分号)
const int* a = &b 和const* int a = &b的区别收藏 如果const关键字不涉及到指针,我们很好理解,下面是涉及到指针的情况: int b = 500; const int* a = &b; [1] int const *a = &b; [2] int* const a = &b; [3] const int* const a = &b; [4] 如果你能区分出上述四种情况,那么,恭喜你,你已经迈出了可喜的一步。不知道,也没关系,我们可以参考《Effective c++》Item21上的做法,如果const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于星号的右侧,const就是修饰指针本身,即指针本身是常量。因此,[1]和[2]的情况相同,都是指针所指向的内容为常量(const放在变量声明符的位置无关),这种情况下不允许对内容进行更改操作,如不能*a = 3 ;[3]为指针本身是常量,而指针所指向的内容不是常量,这种情况下不能对指针本身进行更改操作,如a++是错误的;[4]为指针本身和指向的内容均为常量。另外const 的一些强大的功能在于它在函数声明中的应用。在一个函数声明中,const 可以修饰函数的返回值,或某个参数;对于成员函数,还可以修饰是整个函数。有如下几种情况,以下会逐渐的说明用法: A& operator=(const A& a); void fun0(const A* a ); void fun1( ) const; // fun1( ) 为类成员函数 const A fun2( ); --------------------------------------------------------------------------------------------------------------------------------------------- const int * pi 、int const * pi与int * const pi及其操作 (本贴已经做了重大修改) 1 从const int i 说起
使用VS2008开发上位机软件, 在存储模块,利用GetSaveFileName(&ofn) 函数创建文件选择窗口选择要存储的文件,在初始化OPENFILENAME结构体对象ofn时报错,具体是利用常字符串对ofn成员变量lpstrFile 和lpstrFilter初始化报错:不能从const char *转换为LPCWSTR或LPCSTR。 原代码如下: OPENFILENAME ofn; // common dialog box structure char szFile[260]; // buffer for file name HWND hwnd=this->m_hWnd; // owner window // Initialize OPENFILENAME ZeroMemory(&ofn, sizeof(ofn)); ofn.lStructSize = sizeof(ofn); ofn.hwndOwner = hwnd; ofn.lpstrFile = szFile; // // Set lpstrFile[0] to '\0' so that GetOpenFileName does not // use the contents of szFile to initialize itself. //
ofn.lpstrFile[0] = '\0'; ofn.nMaxFile = sizeof(szFile); ofn.lpstrFilter = "All\0*.*\0Text\0*.TXT\0"; ofn.nFilterIndex = 1; ofn.lpstrFileTitle = NULL; ofn.nMaxFileTitle = 0; ofn.lpstrInitialDir = NULL; ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST; 报错截图如下: 错误原因: 因为我的程序在UNICODE(宽字节)字符集下运行,UNICODE与ANSI 有什么区别呢?简单的说,UNICODE版的字符比ANSI 的内存占用大,比如:Win32程式中出现的标准定义char 占一个字节,而char 的UNICODE版被定义成这样:typedef unsigned short wchar_t ;占2个字节。所以有字符做参数的函数相应也用两个版本了 可行方法: 可行的办法是使用_T("TEST")转换,或者TEXT("TEST" )都可以,另外,在初始化过程LPCWSTR 时,不是char*,而是_wchar_t。 修改后代码: OPENFILENAME ofn; // common dialog box structure wchar_t szFile[260]; // buffer for file name HWND hwnd=this->m_hWnd; // owner window // Initialize OPENFILENAME ZeroMemory(&ofn, sizeof(ofn)); ofn.lStructSize = sizeof(ofn); ofn.hwndOwner = hwnd; ofn.lpstrFile = szFile; // // Set lpstrFile[0] to '\0' so that GetOpenFileName does not // use the contents of szFile to initialize itself. // ofn.lpstrFile[0] = '\0'; ofn.nMaxFile = sizeof(szFile); ofn.lpstrFilter = _T("All\0*.*\0Text\0*.TXT\0"); ofn.nFilterIndex = 1; ofn.lpstrFileTitle = NULL; ofn.nMaxFileTitle = 0; ofn.lpstrInitialDir = NULL; ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST; 网上类似问题解答:
Unit5 Grammar Inversion(倒装) 英语部分倒装用法归纳(Partial Inversion) 1. 否定副词位于句首时的倒装 在正式文体中,never, seldom, rarely, little, hardly, scarcely, no sooner, no longer, nowhere 等含有否定意义的副词若位于句首,则其后要用部分倒装: I shall never forgive him. / Never shall I forgive him. 我永远不会宽恕他。 He seldom goes out for dinner. / Seldom does he go out for dinner. 他很少出去吃饭。 She hardly has time to listen to music. / Hardly does she have time to listen to music. 她几乎没时间听音乐。 He little realizes how important this meeting is. / Little does he realize how important this meeting is. 他不甚明白这个会议的重要性。 We had no sooner reached the airport than the plane took off. / No sooner had we reached the airport than the plane took off. 我们刚到机场,飞机就起飞了。 【注意】 (1)对于not…until句型,当not until…位于句首时,其后的主句要用倒装语序: He didn’t leave the r oom until the rain stopped. / Not until the rain stopped did he leave the room. 雨停了之后他才离开这房间。 (2)某些起副词作用的介词短语,由于含有否定词,若位于句首,其后要用部分倒装: On no accounts must this switch be touched. 这个开关是绝不能触摸的。 In [Under] no circumstances will I lend money to him.无论如何我也不会再借钱给他了。 但是,in no time(立即,马上)位于句首时,其后无需用倒装语序: In no time he worked out the problem. 他马上就算出了那道题。 2.“only+状语”位于句首时的倒装 当一个状语受副词only的修饰且置于句首时,其后用部分倒装语序: Only then did he realize that he was wrong. 到那时他才意识到他错了。 Only in this way are you able to do it well. 你只有用这种方法才能把它做好。 Only when he returned home did he realize what had happened. 当他回到家里时,才知道出了什么事。 3. “so+adj. / adv.”位于句首时的倒装 副词so后接形容词或副词位于句首时,其后用部分倒装: So cold was the weather that we had to stay at home. 天气太冷,我们只好呆在家里。 So fast does light travel that we can hardly imagine its speed. 光速很快,我们几乎没法想像它的速度。 So sudden was the attack that we had no time to escape. 袭击来得非常突然,我们来不及逃跑。 4.“so+助动词+主语”倒装 当要表示前面提出的某一肯定的情况也同样适合于后者,通常就要用“So+助动词+主语”这种倒装结构: You are young and so am I. 你年轻,我也年轻。 She likes music and so do I. 她喜欢音乐,我也喜欢。
--------------------------CONST--------------------------------------- const应用: 一、对于基本声明 const int r=100;//标准const变量声明加初始化,编译器经过类型检查后直接用100在编译时替换。 二、对于指针 1. int x=10; const int *r=&x; //指针指向的内容是常量,r指向的内容不能够通过r改变,但如果是非const,内容可以通过自己改变,而且r指针可以改变,可以指向其它的整形. //*r=*r+1;NO //x++;YES //r=&y;YES 2. int const *r=&x; 与1完全相同 3. int * const r=&x; //指针指向是常量,不能修改去指向其它内容,但指向的内容可以修改 //r=&y;NO //*r=*r+1;YES //x++;YES 4.const int * const r=&x; //综合1、3用法,r是一个指向常量的常量型指针,指针指向不能改变,指针内容不能改变,内容可以自身改变 //r=&y;NO //*r=*r+1;NO //x++;YES 三、对于类型检查 可以把非const对象赋予const指针,这样就不能改变.但是不能把const赋给非const,除非先强制转换 const int x=100; int *p=(int*)&x; *p++; 四、对于函数 1.void Fuction1(const int r); //此处为参数传递const值,意义是变量初值不能被函数改变 2.const int Fuction1 (int); //此处返回const值,意思指返回的原函数里的变量的初值不能被修改,但是函数按值返回的这个变量被制成副本,能不能被修改就没有了意义,它可以被赋给任何的const或非const类型变量,完全不需要加上这个const关键字。 3.Class CX; //内部有构造函数,声明如CX(int r =0) CX Fuction1 () { return CX(); } const CX Fuction2 () { return CX(); } Fuction1() = CX(1); //没有问题,可以作为左值调用 Fuction2() = CX(1); //编译错误,const返回值禁止作为左值调用。 4.函数中指针的const传递和返回: int F1 (const char *pstr); //作为传递的时候使用const修饰可以保证不会通过这个指针来修改传递参数的初值 const char *F2();//意义是函数返回的指针指向的对象是一个const对象,它必须赋给一个同样是指向const对象的指针 const char * const F3(); //比上面多了一个const,这个const的意义只是在他被用作左值时有效,它表明了这个指针除了指向const对象外,它本身也不能被修改,所以就不能当作左值来处理。 五、对于类 1.首先,对于const的成员变量,只能在构造函数里使用初始化成员列表来初始化,试图在构造函数体内进行初始化const成员变量会引起编译错误。初始化成员列表形如:X:: X ( int ir ): r(ir) {} //假设r是类X的const成员变量 注意:类的构造和析构函数都不能是const函数。 2.建立了一个const成员函数,但仍然想用这个函数改变对象内部的数据。(函数不能修改类的数据成员)
IF的用法 if是英语中出现频率很高的连词,并且它的用法也很多。学生感到很难掌握,为了让同学们更多更好地了解其用法及其语法功能。现结合教学中遇到的情况,予以归纳,以供参考。 一、if作为连词,引导条件状语从句,它表示的意思是“假如”“如果”等。在复合句中如果主句用将 来时,则if引导的状语从句用一般现在时。例如: 1. If itdoesn’train, we will go to the park next Sunday. 如果天不下雨,下周星期天我们将去公园。 2. If you ask him,he will help you.如果你求他,他将会帮助你。 二、if还可以引导让步状语从句。这时if当作“即使是”,“虽说”解。例如: 1. If she’s poor,at least she’s honest.虽说她很穷,但至少她还是诚实的。 2. If I am wrong,you are wrong,too.即使说我错了,那么你也不对。 3. I’ll do it, even if it takes me all the afternoon.虽然会花费我一下午的时间,我还是要做这事。 三、if作为连词还可以引导宾语从句。引导宾语从句时和whether意思相同。例如: 1. Lily asked if /whether she liked it. 莉莉问她是否喜欢它。 2. She asked if /whether they had a cotton one.她问是否他们有一件棉织的。 四、if引导时间状语从句,当if做“当”或“无论何时”解而不含有条件之义时,if从句中的时态与主句中的时态相同。例如: 1. If youmix yellow and blue,you get green.你将黄色与蓝色混合,便会得到绿色。 2. If she wants the servant,she rings the bell.每当她需要仆人时,她便按铃。 五、if后接否定动词,用于感叹句中,表示沮丧、惊奇等。例如: I. Well,if I haven’t left my false teeth at home!真倒霉,我把假牙丢在家里了! 2. And if he didn’t try to kn ock me down!(What do you think he did!He tried knock me down!)你猜他想做什么?他想把我撞倒! 六、用于虚拟语气中,if从句中用过去式,表示不可能实现,大概不会实现或提出作为考虑的假定条件。例如: 1. If you were a bird, you could fly.假使你是只鸟,你便会飞了。 2. If I asked him(if I were to ask him) for a loan,would he agree?如果我向他借贷,他会答应吗? 另外,if从句中用过去完成式,表示过去未实现的条件(例如由于不可能实现或某人之未能实行)。例如: 1. If they had startedearlier,they would have arrivedin time.要是他们早些动身,他们便可及时到达了。 2. If they had not started when they did,they would not be here now.如果他们那时不动身,现在他们就不会在此地了。 第三,在文学体栽中,if有时可省略,然后将主语与所用的限定动词(尤其是were,had,should)倒置。例如: 1. Should it (=if it should)be necessary,I will go. 倘若有必要,我会去的。 2. Were I(=if I were) in your place,I would do the same .如果我处于你的位置,我也会这样干的。 3. Had I(=if I had)known earlier,I would come.如果我早一点知道,我就会来。 七、if与其它一些介词的连用。
C++指针、引用详解.txt用快乐去奔跑,用心去倾听,用思维去发展,用努力去奋斗,用目标去衡量,用爱去生活。钱多钱少,常有就好!人老人少,健康就好!家贫家富,和睦就好。指针、引用与指针引用传值详解:(下文定义形式中的p都是标识符名,读者可自行修改) 1.指向常量的指针 可以改变指针指向哪个对象,但是不能改变指向对象的值 定义形式: (const int*) p; (int const*) p; //括号可以省去 测试内容: -------------------- int a = 10; const int b = 2; const int* test_p; test_p = &b; //正确,指向常量的指针可以指向常量 test_p = &a; //正确,这里隐式转换:test_p = (const int *)&a;(如果是从const int* 转换到int或者const int 的话,需要显式转换) *test_p = 3;//错误,不能尝试修改所指的对象的值 a++; cout<<*test_p;//将输出11(上一语句虽然不能用*test_p++来修改所指向的对象a,但是由于a是变量,直接对变量进行修改后,指针值*test_p也就指向a++的值了) //这种方法少用,造成用法不明确性 --------------------- //另加: 如果有 int *p; const int b = 2; p = &b;//错误,b是常量,普通指针不能指向常量,这是C++为了保证常量的只读性(毕竟如果p能指向b,那么根据定义*p的值就可以修改,这与常量不能重定义和修改矛盾) --------------------- 2.指针常量 可以改变指向对象的值,但不能改变指向的对象。 定义形式:
标点符号 知识要点: 标点符号是书面语言的有机组成部分,是书面语言不可缺少的辅助工具。标点符号的主要作用有三点:1.表示停顿;2.表示语气;3.表示词语的性质和作用。现在通行的标点符号有l6种,分为点号和标号两大类。点号包括:顿号(、)、逗号(,)、分号(;)、句号(。)、问号(?)、叹号(!)和冒号(:)。而标号则包括:破折号(——)、括号(( ))、省略号(……)、书名号(《》)、引号(“”)等。 答题注意: 1、标点符号是书面语里用来表示停顿、语调以及词语性质和作用的符号。虽然它只是一个小符号,作用却非常大,一定要认真读题,什么样的语气就相应地用什么样的标点符号。 2、给一段话加标点,难度较大,首先要认真地读这一段话看一看一共有几句话.每句话是什么意思,使用的是怎样的语气,然后再动手加标点符号,最后再读一读,检查标点符号使用得是否恰当、正确。 方法指津: 小学5~6年级与初中阶段要求掌握的常用标点符号大体一致,只是题型有变化,难度有所提高。在解题时要注意以下几个方面: 1.建立标点符号用法表,熟悉掌握常用标点符号的用法。无论是主观题,还是客观题,熟悉并掌握常用标点符号的用法,是准确解答标点符号题的基础。 2.熟记各种标点符号的位置,规范使用标点符号。如:标点符号由点号与标号组成,点号分为句中点号和句末点号。其中句中点号由顿号、分号、逗号组成,这三种点号均表示一个句子内部的停顿。顿号表示词语之问的停顿,一般应是两个或以上的词语之间,停顿时间最短;逗号表示一个句子内的一般性停顿,可以是词语、短语或句子内部的分句,停顿时问稍长;分号则用于复句内部并列的分句之间或排比句中并列的分句之间,停顿的时间比逗号更长。运用时,应先用停顿短的逗号,再用停顿长的分号,不能乱了秩序,只有在分行列举的各项之间,才能直接用分号。又如:七种点号都占一个字的位置,通常点在紧靠文字右边偏下,不能用在一行之首,引号、括号、书名号都标在文字前后,各占一个字位置。破折号和省略号占两个字的位置,都标在正中。连接号占一个字的位置,着重号标在字的下面,间隔号写在格子正中。知晓了这些内容,才能规范使用标点符号,为识破标点使用的正误打下基础。 3.总结、积累标点符号使用的特点、规律,以简驭繁。事物总是有规律的,标点符号也不例外。如冒号的使用就有以下规律:一是冒号不能连用,在同一句子中,冒号一般只用一个,否则便会面目不清,必须将其中一个改为逗号;二是冒号后面揭示范围不清楚。特别是冒号与引号连用时,一定要分清冒号提示的范围,如果提示的是全部,句末的句号应在引号之外;如果提示的仅引号内的部分,那么或将冒号改为逗号,或将逗号改为引号内句号。 4.对易错标点要反复训练,定期复习巩固。有些标点在使用中常常被误用,如顿号、分号、逗号的误用,冒号的误用,句号、叹号、问号的误用等。还有不同标点间的连用、套用容易出错,比如引号的使用.因为引语与“某某说”之间位置不同,标点符号也就不同。“说”在前,“引语”在后,“说”后用冒号;“说”在“引语”中间,“说”后用逗号;“说”在“引语”之后,“说”后用句号。如果区分不明,则易导致标号误用。因此,我们在平时的学习实践中一定要反复训练,不断强化巩固。
const是一个C语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性。类型声明中const用来修饰一个常量,有如下两种写法,那么,请问,下面分别用const限定不可变的内容是什么? 1)、const在前面 const int nValue;//nValue是const const char *pContent; //*pContent是const, pContent可变 const (char *) pContent;//pContent是const,*pContent可变 char* const pContent; //pContent是const,*pContent可变 const char* const pContent; //pContent和*pContent都是const 2)、const在后面,与上面的声明对等 int const nValue;// nValue是const char const * pContent;// *pContent是const, pContent可变 (char *) const pContent;//pContent是const,*pContent可变 char* const pContent;// pContent是const,*pContent可变 char const* const pContent;// pContent和*pContent都是const 答案与分析: const和指针一起使用是C语言中一个很常见的困惑之处,在实际开发中,特别是在看别人代码的时候,常常会因为这样而不好判断作者的意图,下面讲一下我的判断原则:当const所在代码段中不包含括号时,沿着*号划一条线,如果const 位于*的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于*的右侧,const就是修饰指针本身,即指针本身是常量。你可以根据这个规则来看上面声明的实际意义,相信定会一目了然。
精心整理1.(表示条件)如果,主句用将来时,if从句用现在时表示将来Hewillcomeifyouinvitehim. 如果你请他,他会来的。 2.(表示虚拟)假如,要是 1 a. b. 句型:条件从句主句 过去完成时should(would)have+过去分词 Ifshehadworkedharder,shewouldhavesucceeded. Thericewouldnothavebeenburntifyouhadbeenmorecareful.
IfmylawyerhadbeenherelastSaturday,hewouldhavepreventedmefromgoing. Ifhehadcomeyesterday,Ishould/wouldhavetoldhimaboutit. 含义:Hedidnotcomeyesterday,soIdidnottellhimaboutit. c. were+ Ifyousucceeded,everythingwouldbeallright. Ifyoushouldsucceed,everythingwouldbeallright. Ifyouweretosucceed,everythingwouldbeallright.
3.是否=whether连接宾语从句 Iwonderifsheisill. 不知她是否病了。 连接词conj. 1.( 2.( 3.( 4.是否 不知她是否病了。 5.(表示因果关系)每一次...的时候(总是会) IfIfeelanydoubt,Iinquire. 我一感到有疑问就随时询问。 if作为连词的时候,一般用于条件状语从句或者是宾语从句或让步状语从句
指向函数的指针 函数指针是指指向函数而非指向对象的指针。像其他指针一样,函数指针也指向某个特定的类型。函数类型由其返回类型以及形参表确定,而与函数名无关: bool (*pf)(const string &,const string &); 这个语句将pf声明为指向函数的指针,它所指向的函数带有两个const string &类型的形参和bool 类型的返回值。 注意:*pf两侧的括号是必需的。 1.typedef简化函数指针的定义: 函数指针类型相当地冗长。使用typedef为指针类型定义同义词,可将函数指针的使用大大简化: Typedef bool (*cmpfn)(const string &,const string &); 该定义表示cmpfn是一种指向函数的指针类型的名字。该指针类型为“指向返回bool类型并带有两个const string 引用形参的函数的指针”。在要使用这种函数指针类型时,只需直接使用cmpfcn即可,不必每次都把整个类型声明全部写出来。 2.指向函数的指针的初始化和赋值 在引用函数名但又没有调用该函数时,函数名将被自动解释为指向函数的指针。假设有函数: Bool lengthcompare(const string &,const string &); 除了用作函数调用的左操作数以外,对lengthcompare的任何使用都被解释为如下类型的指针:
bool (*)(const string &,const string &); 可使用函数名对函数指针初始化或赋值: cmpfn pf1=0; cmpfn pf2=lengthcompare; pf1=legnthcompare; pf2=pf1; 此时,直接引用函数名等效于在函数名上应用取地址操作符: cmpfcn pf1=lengthcompare; cmpfcn pf2=lengthcompare; 注意:函数指针只能通过同类型的函数或函数指针或0值常量表达式进行初始化或赋值。 将函数指针初始化为0,表示该指针不指向任何函数。 指向不两只函数类型的指针之间不存在转换: string::size_type sumLength(const string &,const string &); bool cstringCompare(char *,char *); //pointer to function returning bool taking two const string& cmpFcn pf;//error:return type differs pf=cstringCompare;//error:parameter types differ pf=lengthCompare;//ok:function and pointer types match exactly 3.通过指针调用函数 指向函数的指针可用于调用它所指向的函数。可以不需要使用解引用
what用法总结 温馨提示:what用法很多,对专升本有用的我已经用红色字体显示,由于部分同学考研可能要用到,把几乎所有用法都附上了。 what的用法是各种类型英语科测试的热点,what的用法灵活多变,出题花样翻新,只有对其有一个全面的掌握,才能灵活运用。本文以2006年的两道高考题为例,总结what的用法,希望能让同学们对它有一个全面的了解。 The shopkeeper did not want to sell for _____ he thought was not enough.(2006山东卷第26题) A. where B. how C. what D. which 答案:C Great changes have taken place in that school. It is no longer _____ it was 20 years ago, _____ it was so poorly equipped.(2006安徽卷第32题) A. what; when B. that; which C. what; which D. which; that 答案:A. 上述两题中的what都是关系代词,一般含义是“the thing that”。第一题中what 的意思是“the price that”,引导宾语从句;第二题中what的意思是“the school that”,引导的是表语从句。what的其他结构还有:
一、what + little 在此结构中,little是名词,强调某种东西“虽少但已是全部”,至于被强调的是什么,只能凭借上下文来判断。 例如:(1)What little he said on the subject was full of wisdom. (2)She saved what little of the money she could out of her slim salary to help her brother go to school 二、what little + 名词 此结构为上一结构的延伸,所不同的是,little在这里不是名词,而是形容词了。 例如:(1)He gave me what little money he had about him. (2)My father spent what little spare time he had in writing. 三、what + few + 名词 当被修饰的名词为可数名词时,little应换成few,含义为“仅有的几个”。 例如:(1)What few friends I have are very kind to me. (2)I will lend you what few books I can spare.
1. If you eat my food, I won’t talk to you. (P58) 2. I will die , I don’t have food, (P58) 3. What shall we do if it rains tomorrow? 5. She asked me if I was fond of music. 她问我是否喜欢音乐。 6. Can you tell me if they’re planning to come? 你能告诉我他们是否打算过来吗? 7. I don’t know if she’s coming. 我不知道她是否会来。 ◇相关词组 ☆if you want/like如果你愿意的话 You can come and stay with us if you want. ☆if so如果是的话 Are you planning to return to work, and if so, who is going to look after the baby? ☆if not如果不是的话 Has anyone dealt with the technical problems? And if not, why not?☆if necessary/if possible 如果必要/可能的话 We are ready to fight for our rights if necessary. I should like to be back here by 10:30 if possible. ☆even if即使 I’d rather never sell this painting, even if they offered me a million dollars. ☆what if 要是……,那怎么办?如果……那会怎样? What if the boss walked in here now and saw us? ☆as if好像是…… She always talks to me as if she was my sister. ◇相关练习 动词填空: 1. If it ______ (be) sunny tomorrow, I ______( walk) to school . 2. We ________ (not have ) our sports meeting if the
partly的用法总结大全 partly的意思是什么呢?partly的用法是怎样的呢,今天给大家带来了parcel的用法,希望能够帮助到大家,一起来学习吧。 partly的意思 adv. 在一定程度上,部分地,不完全地,半 partly用法 partly可以用作副词 partly用作副词指“部分地,不完全地”,修饰形容词常置于其前。常用于partly...partly...结构。 partly无比较级和最高级形式。 partly用作副词的用法例句 You have introduced a partly random component.你介绍了一个在一定程度上属于偶然的成分。 The transformation is partly due to demographics.这一变化一定程度上是源于人口的变化。 Their energy is partly dissipated.它们的能量被部分地消耗掉。
partly双语例句 1.This is partly a political and partly a legal question.这个问题部分是政治问题, 部分是法律问题。 2.Farming is partly subsidised by the government.农业得到政府的部分资助。 3.Their company sell partly to foreign markets.他们公司部分向国外市场销售。 4.Leaves scale-like, distichous, equitant, sometimes linear or partly linear.叶鳞片状,2列,套折,有时线形的或部分线形。 5.The delay is partly explicable by the road works.延误的部份原因是道路施工。 6.I believe what he has said is partly true.我相信他刚才说的话一部分是真实的。 7.The sale of ice cream is partly determined by the weather.冰淇淋的销量部分取决于天气。 8.Maturate partly in French oak barrique and partly in Slovenian oak casks for about 12-15 months.之后,一部分在法国橡木桶里醇化,一部分在斯洛文尼亚橡木桶里醇化,大致需要12-15个月。