C程序设计谭浩强版复习资料.doc
《C程序设计谭浩强版复习资料.doc》由会员分享,可在线阅读,更多相关《C程序设计谭浩强版复习资料.doc(7页珍藏版)》请在冰豆网上搜索。
下面罗列了一部分重要知识点,声明:
仅供参考
1、
(1)一个C++程序可以由一个程序单位或多个程序单位构成。
每一个程序单位作为一个文件。
在程序编译时,编译系统分别对各个文件进行编译,因此,一个文件是一个编译单元。
(2)在一个程序单位中,可以包括以下几个部分:
①预处理命令。
上节4个程序中都包括#include命令。
②全局声明部分(在函数外的声明部分)。
在这部分中包括对用户自己定义的数据类型的声明和程序中所用到的变量的定义。
③函数。
函数是实现操作的部分,因此函数是程序中必须有的和最基本的组成部分。
每一个程序必须包括一个或多个函数,其中必须有一个(而且只能有一个)主函数(main函数)。
但是并不要求每一个程序文件都必须具有以上3个部分,可以缺少某些部分(包括函数)。
(3)一个函数由两部分组成:
①函数首部,即函数的第一行。
包括函数名、函数类型、函数属性、函数参数(形参)名、参数类型。
一个函数名后面必须跟一对圆括号,函数参数可以缺省,如intmain()。
②函数体,即函数首部下面的大括号内的部分。
如果在一个函数中有多个大括号,则最外层的一对{}为函数体的范围。
函数体一般包括:
•局部声明部分(在函数内的声明部分)。
包括对本函数中所用到的类型、函数的声明和变量的定义。
对数据的声明既可以放在函数之外(其作用范围是全局的),也可以放在函数内(其作用范围是局部的,只在本函数内有效)。
•执行部分。
由若干个执行语句组成,用来进行有关的操作,以实现函数的功能。
(4)语句包括两类。
一类是声明语句,另一类是执行语句。
C++对每一种语句赋予一种特定的功能。
语句是实现操作的基本成分,显然,没有语句的函数是没有意义的。
C++语句必须以分号结束。
(5)一个C++程序总是从main函数开始执行的,而不论main函数在整个程序中的位置如何。
(6)类(class)是C++新增加的重要的数据类型,是C++对C的最重要的发展。
有了类,就可以实现面向对象程序设计方法中的封装、信息隐蔽、继承、派生、多态等功能。
在一个类中可以包括数据成员和成员函数,他们可以被指定为私有的(private)和公用的(public)属性。
私有的数据成员和成员函数只能被本类的成员函数所调用。
(7)C++程序书写格式自由,一行内可以写几个语句,一个语句可以分写在多行上。
C++程序没有行号,也不像FORTRAN或COBOL那样严格规定书写格式(语句必须从某一列开始书写)。
(8)一个好的、有使用价值的源程序都应当加上必要的注释,以增加程序的可读性。
C++还保留了C语言的注释形式,可以用“/*……*/”对C++程序中的任何部分作注释。
在“/*”和“*/”之间的全部内容作为注释。
用“//”作注释时,有效范围只有一行,即本行有效,不能跨行。
而用“/*……*/”作注释时有效范围为多行。
只要在开始处有一个“/*”,在最后一行结束处有一个“*/”即可。
因此,一般习惯是:
内容较少的简单注释常用“//”,内容较长的常用“/*……*/”。
2、一个程序从编写到最后得到运行结果要经历哪几个步骤?
文件包含是什么意思?
3、数据类型各知识点
4、什么叫变量?
有哪些属性?
变量名规则是什么?
变量除了有数据类型属性外,还有哪些属性?
5、C++的运算符有哪些?
其运算的优先级是什么?
C++的关系运算符有:
①< (小于)
②<= (小于或等于) 优先级相同(高)
③> (大于)
④>= (大于或等于)
⑤== (等于)
⑥!
= (不等于) 优先级相同(低)
关于优先次序:
①前4种关系运算符(<,<=,>,>=)的优先级别相同,后两种也相同。
前4种高于后两种。
例如,“>”优先于“==”。
而“>”与“<”优先级相同。
②关系运算符的优先级低于算术运算符。
③关系运算符的优先级高于赋值运算符。
例如:
c>a+b等效于c>(a+b)
a>b==c等效于(a>b)==c
a==ba=b>c等效于a=(b>c)用关系运算符将两个表达式连接起来的式子,称为关系表达式。关系表达式的一般形式可以表示为表达式关系运算符表达式其中的“表达式”可以是算术表达式或关系表达式、逻辑表达式、赋值表达式、字符表达式。例如,下面都是合法的关系表达式:a>b,a+b>b+c,(a==3)>(b==5),′a′<′b′,(a>b)>(b关系表达式的值是一个逻辑值,即“真”或“假”。例如,关系表达式“5==3”的值为“假”,“5>=0”的值为“真”。在C和C++中都用数值1代表“真”,用0代表“假”。如果有以下赋值表达式:d=a>b则d得到的值为1f=a>b>cf得到的值为0逻辑运算符的优先次序:(1)!(非)→&&(与)→(或),即“!”为三者中最高的。(2)逻辑运算符中的“&&”和“||”低于关系运算符,“!”高于算术运算符。6、“判断浮点数a是否在闭区间[-16.3,-10.9]之中”的C++语言表达式是什么?7、C++提供的预处理功能有哪些?8、设变量a为int型变量,且值为8。请运算a++和++a后表达式的值和变量a的值分别是多少?9、什么叫文件包含处理?头文件一般包含哪几类内容10、程序段如下:for(s=0,i=1;i<10;i++){if(i%4==0)break;s=s+i;}则程序段运行完毕后s的值为多少?11、内存中供用户使用的存储空间通常由几个部分组成?12、编程完成输入一个字符,判别它是否为大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。13、编写程序,判断某一年是否为闰年;14、编写程序找出100~200间的全部素数;15、编程求3个正整数中的最大数(用3种以上不同方法)16、编程输入a和b两个整数,按先大后小的顺序输出a和b(用指针变量处理)17、如果x=3,y=6,则int(x+y)=。18、doublea=123.456789012345;对a赋初值(1)cout<(2)cout<(3)cout<(4)cout<(5)cout<(6)cout<(7)cout<intb=123456;对b赋初值(1)cout<(2)cout<(3)cout<(4)cout<(5)cout<(6)cout<19、变量除了有数据类型属性外,还有哪些属性?20、什么是变量?什么是指针?变量和指针之间有何联系?指针有哪些属性?21、什么是数组?数组名有什么意义?用数组名作为参数有何要求?与指针之间有何联系和区别?一维和二维数组的定义、引用和初始化等22、关于用数组名作函数参数有两点要说明(1)如果函数实参是数组名,形参也应为数组名,形参不能声明为普通变量(如intarray;)。实参数组与形参数组类型应一致(现都为int型),如不一致,结果将出错。(2)需要特别说明的是:数组名代表数组首元素的地址,并不代表数组中的全部元素。因此用数组名作函数实参时,不是把实参数组的值传递给形参,而只是将实参数组首元素的地址传递给形参。形参可以是数组名,也可以是指针变量,它们用来接收实参传来的地址。如果形参是数组名,它代表的是形参数组首元素的地址。在调用函数时,将实参数组首元素的地址传递给形参数组名。这样,实参数组和形参数组就共占同一段内存单元。在用变量作函数参数时,只能将实参变量的值传给形参变量,在调用函数过程中如果改变了形参的值,对实参没有影响,即实参的值不因形参的值改变而改变。而用数组名作函数实参时,改变形参数组元素的值将同时改变实参数组元素的值。在程序设计中往往有意识地利用这一特点改变实参数组元素的值。实际上,声明形参数组并不意味着真正建立一个包含若干元素的数组,在调用函数时也不对它分配存储单元,只是用array[]这样的形式表示array是一维数组名,以接收实参传来的地址。因此array[]中方括号内的数值并无实际作用,编译系统对一维数组方括号内的内容不予处理。形参一维数组的声明中可以写元素个数,也可以不写。23、字符串处理函数有哪些?24、#includeusingnamespacestd;intmain(){charc1;c1=′a′+’8’-’5’;cout<return0;}请问输出什么?25、有两个与指针变量有关的运算符:(1)&取地址运算符。(2)*指针运算符(或称间接访问运算符)26、课本中对“&”和“*”运算符再做些说明部分;27、如果先使p指向数组a的首元素(即p=a),则:(1)p++(或p+=1)。使p指向下一元素,即a[1]。如果用*p,得到下一个元素a[1]的值。(2)*p++。由于++和*同优先级,结合方向为自右而左,因此它等价于*(p++)。作用是:先得到p指向的变量的值(即*p),然后再使p的值加1。例6.5(3)程序中最后一个for语句:for(p=a;pcout<<*p;可以改写为for(p=a;pcout<<*p++;(3)*(p++)与*(++p)作用不同。前者是先取*p值,然后使p加1。后者是先使p加1,再取*p。若p的初值为a(即&a[0]),输出*(p++)得到a[0]的值,而输出*(++p)则得到a[1]的值。(4)(*p)++表示p所指向的元素值加1,即(a[0])++,如果a[0]=3,则(a[0])++的值为4。注意:是元素值加1,而不是指针值加1。(5)如果p当前指向a[i],则*(p--)先对p进行“*”运算,得到a[i],再使p减1,p指向a[i-1]。*(++p)先使p自加1,再作*运算,得到a[i+1]。*(--p)先使p自减1,再作*运算,得到a[i-1]。将++和--运算符用于指向数组元素的指针变量十分有效,可以使指针变量自动向前或向后
a=b>c等效于a=(b>c)
用关系运算符将两个表达式连接起来的式子,称为关系表达式。
关系表达式的一般形式可以表示为
表达式关系运算符表达式
其中的“表达式”可以是算术表达式或关系表达式、逻辑表达式、赋值表达式、字符表达式。
例如,下面都是合法的关系表达式:
a>b,a+b>b+c,(a==3)>(b==5),′a′<′b′,(a>b)>(b关系表达式的值是一个逻辑值,即“真”或“假”。例如,关系表达式“5==3”的值为“假”,“5>=0”的值为“真”。在C和C++中都用数值1代表“真”,用0代表“假”。如果有以下赋值表达式:d=a>b则d得到的值为1f=a>b>cf得到的值为0逻辑运算符的优先次序:(1)!(非)→&&(与)→(或),即“!”为三者中最高的。(2)逻辑运算符中的“&&”和“||”低于关系运算符,“!”高于算术运算符。6、“判断浮点数a是否在闭区间[-16.3,-10.9]之中”的C++语言表达式是什么?7、C++提供的预处理功能有哪些?8、设变量a为int型变量,且值为8。请运算a++和++a后表达式的值和变量a的值分别是多少?9、什么叫文件包含处理?头文件一般包含哪几类内容10、程序段如下:for(s=0,i=1;i<10;i++){if(i%4==0)break;s=s+i;}则程序段运行完毕后s的值为多少?11、内存中供用户使用的存储空间通常由几个部分组成?12、编程完成输入一个字符,判别它是否为大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。13、编写程序,判断某一年是否为闰年;14、编写程序找出100~200间的全部素数;15、编程求3个正整数中的最大数(用3种以上不同方法)16、编程输入a和b两个整数,按先大后小的顺序输出a和b(用指针变量处理)17、如果x=3,y=6,则int(x+y)=。18、doublea=123.456789012345;对a赋初值(1)cout<(2)cout<(3)cout<(4)cout<(5)cout<(6)cout<(7)cout<intb=123456;对b赋初值(1)cout<(2)cout<(3)cout<(4)cout<(5)cout<(6)cout<19、变量除了有数据类型属性外,还有哪些属性?20、什么是变量?什么是指针?变量和指针之间有何联系?指针有哪些属性?21、什么是数组?数组名有什么意义?用数组名作为参数有何要求?与指针之间有何联系和区别?一维和二维数组的定义、引用和初始化等22、关于用数组名作函数参数有两点要说明(1)如果函数实参是数组名,形参也应为数组名,形参不能声明为普通变量(如intarray;)。实参数组与形参数组类型应一致(现都为int型),如不一致,结果将出错。(2)需要特别说明的是:数组名代表数组首元素的地址,并不代表数组中的全部元素。因此用数组名作函数实参时,不是把实参数组的值传递给形参,而只是将实参数组首元素的地址传递给形参。形参可以是数组名,也可以是指针变量,它们用来接收实参传来的地址。如果形参是数组名,它代表的是形参数组首元素的地址。在调用函数时,将实参数组首元素的地址传递给形参数组名。这样,实参数组和形参数组就共占同一段内存单元。在用变量作函数参数时,只能将实参变量的值传给形参变量,在调用函数过程中如果改变了形参的值,对实参没有影响,即实参的值不因形参的值改变而改变。而用数组名作函数实参时,改变形参数组元素的值将同时改变实参数组元素的值。在程序设计中往往有意识地利用这一特点改变实参数组元素的值。实际上,声明形参数组并不意味着真正建立一个包含若干元素的数组,在调用函数时也不对它分配存储单元,只是用array[]这样的形式表示array是一维数组名,以接收实参传来的地址。因此array[]中方括号内的数值并无实际作用,编译系统对一维数组方括号内的内容不予处理。形参一维数组的声明中可以写元素个数,也可以不写。23、字符串处理函数有哪些?24、#includeusingnamespacestd;intmain(){charc1;c1=′a′+’8’-’5’;cout<return0;}请问输出什么?25、有两个与指针变量有关的运算符:(1)&取地址运算符。(2)*指针运算符(或称间接访问运算符)26、课本中对“&”和“*”运算符再做些说明部分;27、如果先使p指向数组a的首元素(即p=a),则:(1)p++(或p+=1)。使p指向下一元素,即a[1]。如果用*p,得到下一个元素a[1]的值。(2)*p++。由于++和*同优先级,结合方向为自右而左,因此它等价于*(p++)。作用是:先得到p指向的变量的值(即*p),然后再使p的值加1。例6.5(3)程序中最后一个for语句:for(p=a;pcout<<*p;可以改写为for(p=a;pcout<<*p++;(3)*(p++)与*(++p)作用不同。前者是先取*p值,然后使p加1。后者是先使p加1,再取*p。若p的初值为a(即&a[0]),输出*(p++)得到a[0]的值,而输出*(++p)则得到a[1]的值。(4)(*p)++表示p所指向的元素值加1,即(a[0])++,如果a[0]=3,则(a[0])++的值为4。注意:是元素值加1,而不是指针值加1。(5)如果p当前指向a[i],则*(p--)先对p进行“*”运算,得到a[i],再使p减1,p指向a[i-1]。*(++p)先使p自加1,再作*运算,得到a[i+1]。*(--p)先使p自减1,再作*运算,得到a[i-1]。将++和--运算符用于指向数组元素的指针变量十分有效,可以使指针变量自动向前或向后
关系表达式的值是一个逻辑值,即“真”或“假”。
例如,关系表达式“5==3”的值为“假”,“5>=0”的值为“真”。
在C和C++中都用数值1代表“真”,用0代表“假”。
如果有以下赋值表达式:
d=a>b则d得到的值为1
f=a>b>cf得到的值为0
逻辑运算符的优先次序:
(1)!
(非)→&&(与)→(或),即“!
”为三者中最高的。
(2)逻辑运算符中的“&&”和“||”低于关系运算符,“!
”高于算术运算符。
6、“判断浮点数a是否在闭区间[-16.3,-10.9]之中”的C++语言表达式是什么?
7、C++提供的预处理功能有哪些?
8、设变量a为int型变量,且值为8。
请运算a++和++a后表达式的值和变量a的值分别是多少?
9、什么叫文件包含处理?
头文件一般包含哪几类内容
10、
程序段如下:
for(s=0,i=1;i<10;i++)
{if(i%4==0)break;
s=s+i;}
则程序段运行完毕后s的值为多少?
11、内存中供用户使用的存储空间通常由几个部分组成?
12、编程完成输入一个字符,判别它是否为大写字母,如果是,将它转换成小写字母;如果不是,不转换。
然后输出最后得到的字符。
13、编写程序,判断某一年是否为闰年;
14、编写程序找出100~200间的全部素数;
15、编程求3个正整数中的最大数(用3种以上不同方法)
16、编程输入a和b两个整数,按先大后小的顺序输出a和b(用指针变量处理)
17、如果x=3,y=6,则int(x+y)=。
18、
doublea=123.456789012345;对a赋初值
(1)cout<(2)cout<(3)cout<(4)cout<(5)cout<(6)cout<(7)cout<intb=123456;对b赋初值(1)cout<(2)cout<(3)cout<(4)cout<(5)cout<(6)cout<19、变量除了有数据类型属性外,还有哪些属性?20、什么是变量?什么是指针?变量和指针之间有何联系?指针有哪些属性?21、什么是数组?数组名有什么意义?用数组名作为参数有何要求?与指针之间有何联系和区别?一维和二维数组的定义、引用和初始化等22、关于用数组名作函数参数有两点要说明(1)如果函数实参是数组名,形参也应为数组名,形参不能声明为普通变量(如intarray;)。实参数组与形参数组类型应一致(现都为int型),如不一致,结果将出错。(2)需要特别说明的是:数组名代表数组首元素的地址,并不代表数组中的全部元素。因此用数组名作函数实参时,不是把实参数组的值传递给形参,而只是将实参数组首元素的地址传递给形参。形参可以是数组名,也可以是指针变量,它们用来接收实参传来的地址。如果形参是数组名,它代表的是形参数组首元素的地址。在调用函数时,将实参数组首元素的地址传递给形参数组名。这样,实参数组和形参数组就共占同一段内存单元。在用变量作函数参数时,只能将实参变量的值传给形参变量,在调用函数过程中如果改变了形参的值,对实参没有影响,即实参的值不因形参的值改变而改变。而用数组名作函数实参时,改变形参数组元素的值将同时改变实参数组元素的值。在程序设计中往往有意识地利用这一特点改变实参数组元素的值。实际上,声明形参数组并不意味着真正建立一个包含若干元素的数组,在调用函数时也不对它分配存储单元,只是用array[]这样的形式表示array是一维数组名,以接收实参传来的地址。因此array[]中方括号内的数值并无实际作用,编译系统对一维数组方括号内的内容不予处理。形参一维数组的声明中可以写元素个数,也可以不写。23、字符串处理函数有哪些?24、#includeusingnamespacestd;intmain(){charc1;c1=′a′+’8’-’5’;cout<return0;}请问输出什么?25、有两个与指针变量有关的运算符:(1)&取地址运算符。(2)*指针运算符(或称间接访问运算符)26、课本中对“&”和“*”运算符再做些说明部分;27、如果先使p指向数组a的首元素(即p=a),则:(1)p++(或p+=1)。使p指向下一元素,即a[1]。如果用*p,得到下一个元素a[1]的值。(2)*p++。由于++和*同优先级,结合方向为自右而左,因此它等价于*(p++)。作用是:先得到p指向的变量的值(即*p),然后再使p的值加1。例6.5(3)程序中最后一个for语句:for(p=a;pcout<<*p;可以改写为for(p=a;pcout<<*p++;(3)*(p++)与*(++p)作用不同。前者是先取*p值,然后使p加1。后者是先使p加1,再取*p。若p的初值为a(即&a[0]),输出*(p++)得到a[0]的值,而输出*(++p)则得到a[1]的值。(4)(*p)++表示p所指向的元素值加1,即(a[0])++,如果a[0]=3,则(a[0])++的值为4。注意:是元素值加1,而不是指针值加1。(5)如果p当前指向a[i],则*(p--)先对p进行“*”运算,得到a[i],再使p减1,p指向a[i-1]。*(++p)先使p自加1,再作*运算,得到a[i+1]。*(--p)先使p自减1,再作*运算,得到a[i-1]。将++和--运算符用于指向数组元素的指针变量十分有效,可以使指针变量自动向前或向后
(2)cout<(3)cout<(4)cout<(5)cout<(6)cout<(7)cout<intb=123456;对b赋初值(1)cout<(2)cout<(3)cout<(4)cout<(5)cout<(6)cout<19、变量除了有数据类型属性外,还有哪些属性?20、什么是变量?什么是指针?变量和指针之间有何联系?指针有哪些属性?21、什么是数组?数组名有什么意义?用数组名作为参数有何要求?与指针之间有何联系和区别?一维和二维数组的定义、引用和初始化等22、关于用数组名作函数参数有两点要说明(1)如果函数实参是数组名,形参也应为数组名,形参不能声明为普通变量(如intarray;)。实参数组与形参数组类型应一致(现都为int型),如不一致,结果将出错。(2)需要特别说明的是:数组名代表数组首元素的地址,并不代表数组中的全部元素。因此用数组名作函数实参时,不是把实参数组的值传递给形参,而只是将实参数组首元素的地址传递给形参。形参可以是数组名,也可以是指针变量,它们用来接收实参传来的地址。如果形参是数组名,它代表的是形参数组首元素的地址。在调用函数时,将实参数组首元素的地址传递给形参数组名。这样,实参数组和形参数组就共占同一段内存单元。在用变量作函数参数时,只能将实参变量的值传给形参变量,在调用函数过程中如果改变了形参的值,对实参没有影响,即实参的值不因形参的值改变而改变。而用数组名作函数实参时,改变形参数组元素的值将同时改变实参数组元素的值。在程序设计中往往有意识地利用这一特点改变实参数组元素的值。实际上,声明形参数组并不意味着真正建立一个包含若干元素的数组,在调用函数时也不对它分配存储单元,只是用array[]这样的形式表示array是一维数组名,以接收实参传来的地址。因此array[]中方括号内的数值并无实际作用,编译系统对一维数组方括号内的内容不予处理。形参一维数组的声明中可以写元素个数,也可以不写。23、字符串处理函数有哪些?24、#includeusingnamespacestd;intmain(){charc1;c1=′a′+’8’-’5’;cout<return0;}请问输出什么?25、有两个与指针变量有关的运算符:(1)&取地址运算符。(2)*指针运算符(或称间接访问运算符)26、课本中对“&”和“*”运算符再做些说明部分;27、如果先使p指向数组a的首元素(即p=a),则:(1)p++(或p+=1)。使p指向下一元素,即a[1]。如果用*p,得到下一个元素a[1]的值。(2)*p++。由于++和*同优先级,结合方向为自右而左,因此它等价于*(p++)。作用是:先得到p指向的变量的值(即*p),然后再使p的值加1。例6.5(3)程序中最后一个for语句:for(p=a;pcout<<*p;可以改写为for(p=a;pcout<<*p++;(3)*(p++)与*(++p)作用不同。前者是先取*p值,然后使p加1。后者是先使p加1,再取*p。若p的初值为a(即&a[0]),输出*(p++)得到a[0]的值,而输出*(++p)则得到a[1]的值。(4)(*p)++表示p所指向的元素值加1,即(a[0])++,如果a[0]=3,则(a[0])++的值为4。注意:是元素值加1,而不是指针值加1。(5)如果p当前指向a[i],则*(p--)先对p进行“*”运算,得到a[i],再使p减1,p指向a[i-1]。*(++p)先使p自加1,再作*运算,得到a[i+1]。*(--p)先使p自减1,再作*运算,得到a[i-1]。将++和--运算符用于指向数组元素的指针变量十分有效,可以使指针变量自动向前或向后
(3)cout<(4)cout<(5)cout<(6)cout<(7)cout<intb=123456;对b赋初值(1)cout<(2)cout<(3)cout<(4)cout<(5)cout<(6)cout<19、变量除了有数据类型属性外,还有哪些属性?20、什么是变量?什么是指针?变量和指针之间有何联系?指针有哪些属性?21、什么是数组?数组名有什么意义?用数组名作为参数有何要求?与指针之间有何联系和区别?一维和二维数组的定义、引用和初始化等22、关于用数组名作函数参数有两点要说明(1)如果函数实参是数组名,形参也应为数组名,形参不能声明为普通变量(如intarray;)。实参数组与形参数组类型应一致(现都为int型),如不一致,结果将出错。(2)需要特别说明的是:数组名代表数组首元素的地址,并不代表数组中的全部元素。因此用数组名作函数实参时,不是把实参数组的值传递给形参,而只是将实参数组首元素的地址传递给形参。形参可以是数组名,也可以是指针变量,它们用来接收实参传来的地址。如果形参是数组名,它代表的是形参数组首元素的地址。在调用函数时,将实参数组首元素的地址传递给形参数组名。这样,实参数组和形参数组就共占同一段内存单元。在用变量作函数参数时,只能将实参变量的值传给形参变量,在调用函数过程中如果改变了形参的值,对实参没有影响,即实参的值不因形参的值改变而改变。而用数组名作函数实参时,改变形参数组元素的值将同时改变实参数组元素的值。在程序设计中往往有意识地利用这一特点改变实参数组元素的值。实际上,声明形参数组并不意味着真正建立一个包含若干元素的数组,在调用函数时也不对它分配存储单元,只是用array[]这样的形式表示array是一维数组名,以接收实参传来的地址。因此array[]中方括号内的数值并无实际作用,编译系统对一维数组方括号内的内容不予处理。形参一维数组的声明中可以写元素个数,也可以不写。23、字符串处理函数有哪些?24、#includeusingnamespacestd;intmain(){charc1;c1=′a′+’8’-’5’;cout<return0;}请问输出什么?25、有两个与指针变量有关的运算符:(1)&取地址运算符。(2)*指针运算符(或称间接访问运算符)26、课本中对“&”和“*”运算符再做些说明部分;27、如果先使p指向数组a的首元素(即p=a),则:(1)p++(或p+=1)。使p指向下一元素,即a[1]。如果用*p,得到下一个元素a[1]的值。(2)*p++。由于++和*同优先级,结合方向为自右而左,因此它等价于*(p++)。作用是:先得到p指向的变量的值(即*p),然后再使p的值加1。例6.5(3)程序中最后一个for语句:for(p=a;pcout<<*p;可以改写为for(p=a;pcout<<*p++;(3)*(p++)与*(++p)作用不同。前者是先取*p值,然后使p加1。后者是先使p加1,再取*p。若p的初值为a(即&a[0]),输出*(p++)得到a[0]的值,而输出*(++p)则得到a[1]的值。(4)(*p)++表示p所指向的元素值加1,即(a[0])++,如果a[0]=3,则(a[0])++的值为4。注意:是元素值加1,而不是指针值加1。(5)如果p当前指向a[i],则*(p--)先对p进行“*”运算,得到a[i],再使p减1,p指向a[i-1]。*(++p)先使p自加1,再作*运算,得到a[i+1]。*(--p)先使p自减1,再作*运算,得到a[i-1]。将++和--运算符用于指向数组元素的指针变量十分有效,可以使指针变量自动向前或向后
(4)cout<(5)cout<(6)cout<(7)cout<intb=123456;对b赋初值(1)cout<(2)cout<(3)cout<(4)cout<(5)cout<(6)cout<19、变量除了有数据类型属性外,还有哪些属性?20、什么是变量?什么是指针?变量和指针之间有何联系?指针有哪些属性?21、什么是数组?数组名有什么意义?用数组名作为参数有何要求?与指针之间有何联系和区别?一维和二维数组的定义、引用和初始化等22、关于用数组名作函数参数有两点要说明(1)如果函数实参是数组名,形参也应为数组名,形参不能声明为普通变量(如intarray;)。实参数组与形参数组类型应一致(现都为int型),如不一致,结果将出错。(2)需要特别说明的是:数组名代表数组首元素的地址,并不代表数组中的全部元素。因此用数组名作函数实参时,不是把实参数组的值传递给形参,而只是将实参数组首元素的地址传递给形参。形参可以是数组名,也可以是指针变量,它们用来接收实参传来的地址。如果形参是数组名,它代表的是形参数组首元素的地址。在调用函数时,将实参数组首元素的地址传递给形参数组名。这样,实参数组和形参数组就共占同一段内存单元。在用变量作函数参数时,只能将实参变量的值传给形参变量,在调用函数过程中如果改变了形参的值,对实参没有影响,即实参的值不因形参的值改变而改变。而用数组名作函数实参时,改变形参数组元素的值将同时改变实参数组元素的值。在程序设计中往往有意识地利用这一特点改变实参数组元素的值。实际上,声明形参数组并不意味着真正建立一个包含若干元素的数组,在调用函数时也不对它分配存储单元,只是用array[]这样的形式表示array是一维数组名,以接收实参传来的地址。因此array[]中方括号内的数值并无实际作用,编译系统对一维数组方括号内的内容不予处理。形参一维数组的声明中可以写元素个数,也可以不写。23、字符串处理函数有哪些?24、#includeusingnamespacestd;intmain(){charc1;c1=′a′+’8’-’5’;cout<return0;}请问输出什么?25、有两个与指针变量有关的运算符:(1)&取地址运算符。(2)*指针运算符(或称间接访问运算符)26、课本中对“&”和“*”运算符再做些说明部分;27、如果先使p指向数组a的首元素(即p=a),则:(1)p++(或p+=1)。使p指向下一元素,即a[1]。如果用*p,得到下一个元素a[1]的值。(2)*p++。由于++和*同优先级,结合方向为自右而左,因此它等价于*(p++)。作用是:先得到p指向的变量的值(即*p),然后再使p的值加1。例6.5(3)程序中最后一个for语句:for(p=a;pcout<<*p;可以改写为for(p=a;pcout<<*p++;(3)*(p++)与*(++p)作用不同。前者是先取*p值,然后使p加1。后者是先使p加1,再取*p。若p的初值为a(即&a[0]),输出*(p++)得到a[0]的值,而输出*(++p)则得到a[1]的值。(4)(*p)++表示p所指向的元素值加1,即(a[0])++,如果a[0]=3,则(a[0])++的值为4。注意:是元素值加1,而不是指针值加1。(5)如果p当前指向a[i],则*(p--)先对p进行“*”运算,得到a[i],再使p减1,p指向a[i-1]。*(++p)先使p自加1,再作*运算,得到a[i+1]。*(--p)先使p自减1,再作*运算,得到a[i-1]。将++和--运算符用于指向数组元素的指针变量十分有效,可以使指针变量自动向前或向后
(5)cout<(6)cout<(7)cout<intb=123456;对b赋初值(1)cout<(2)cout<(3)cout<(4)cout<(5)cout<(6)cout<19、变量除了有数据类型属性外,还有哪些属性?20、什么是变量?什么是指针?变量和指针之间有何联系?指针有哪些属性?21、什么是数组?数组名有什么意义?用数组名作为参数有何要求?与指针之间有何联系和区别?一维和二维数组的定义、引用和初始化等22、关于用数组名作函数参数有两点要说明(1)如果函数实参是数组名,形参也应为数组名,形参不能声明为普通变量(如intarray;)。实参数组与形参数组类型应一致(现都为int型),如不一致,结果将出错。(2)需要特别说明的是:数组名代表数组首元素的地址,并不代表数组中的全部元素。因此用数组名作函数实参时,不是把实参数组的值传递给形参,而只是将实参数组首元素的地址传递给形参。形参可以是数组名,也可以是指针变量,它们用来接收实参传来的地址。如果形参是数组名,它代表的是形参数组首元素的地址。在调用函数时,将实参数组首元素的地址传递给形参数组名。这样,实参数组和形参数组就共占同一段内存单元。在用变量作函数参数时,只能将实参变量的值传给形参变量,在调用函数过程中如果改变了形参的值,对实参没有影响,即实参的值不因形参的值改变而改变。而用数组名作函数实参时,改变形参数组元素的值将同时改变实参数组元素的值。在程序设计中往往有意识地利用这一特点改变实参数组元素的值。实际上,声明形参数组并不意味着真正建立一个包含若干元素的数组,在调用函数时也不对它分配存储单元,只是用array[]这样的形式表示array是一维数组名,以接收实参传来的地址。因此array[]中方括号内的数值并无实际作用,编译系统对一维数组方括号内的内容不予处理。形参一维数组的声明中可以写元素个数,也可以不写。23、字符串处理函数有哪些?24、#includeusingnamespacestd;intmain(){charc1;c1=′a′+’8’-’5’;cout<return0;}请问输出什么?25、有两个与指针变量有关的运算符:(1)&取地址运算符。(2)*指针运算符(或称间接访问运算符)26、课本中对“&”和“*”运算符再做些说明部分;27、如果先使p指向数组a的首元素(即p=a),则:(1)p++(或p+=1)。使p指向下一元素,即a[1]。如果用*p,得到下一个元素a[1]的值。(2)*p++。由于++和*同优先级,结合方向为自右而左,因此它等价于*(p++)。作用是:先得到p指向的变量的值(即*p),然后再使p的值加1。例6.5(3)程序中最后一个for语句:for(p=a;pcout<<*p;可以改写为for(p=a;pcout<<*p++;(3)*(p++)与*(++p)作用不同。前者是先取*p值,然后使p加1。后者是先使p加1,再取*p。若p的初值为a(即&a[0]),输出*(p++)得到a[0]的值,而输出*(++p)则得到a[1]的值。(4)(*p)++表示p所指向的元素值加1,即(a[0])++,如果a[0]=3,则(a[0])++的值为4。注意:是元素值加1,而不是指针值加1。(5)如果p当前指向a[i],则*(p--)先对p进行“*”运算,得到a[i],再使p减1,p指向a[i-1]。*(++p)先使p自加1,再作*运算,得到a[i+1]。*(--p)先使p自减1,再作*运算,得到a[i-1]。将++和--运算符用于指向数组元素的指针变量十分有效,可以使指针变量自动向前或向后
(6)cout<(7)cout<intb=123456;对b赋初值(1)cout<(2)cout<(3)cout<(4)cout<(5)cout<(6)cout<19、变量除了有数据类型属性外,还有哪些属性?20、什么是变量?什么是指针?变量和指针之间有何联系?指针有哪些属性?21、什么是数组?数组名有什么意义?用数组名作为参数有何要求?与指针之间有何联系和区别?一维和二维数组的定义、引用和初始化等22、关于用数组名作函数参数有两点要说明(1)如果函数实参是数组名,形参也应为数组名,形参不能声明为普通变量(如intarray;)。实参数组与形参数组类型应一致(现都为int型),如不一致,结果将出错。(2)需要特别说明的是:数组名代表数组首元素的地址,并不代表数组中的全部元素。因此用数组名作函数实参时,不是把实参数组的值传递给形参,而只是将实参数组首元素的地址传递给形参。形参可以是数组名,也可以是指针变量,它们用来接收实参传来的地址。如果形参是数组名,它代表的是形参数组首元素的地址。在调用函数时,将实参数组首元素的地址传递给形参数组名。这样,实参数组和形参数组就共占同一段内存单元。在用变量作函数参数时,只能将实参变量的值传给形参变量,在调用函数过程中如果改变了形参的值,对实参没有影响,即实参的值不因形参的值改变而改变。而用数组名作函数实参时,改变形参数组元素的值将同时改变实参数组元素的值。在程序设计中往往有意识地利用这一特点改变实参数组元素的值。实际上,声明形参数组并不意味着真正建立一个包含若干元素的数组,在调用函数时也不对它分配存储单元,只是用array[]这样的形式表示array是一维数组名,以接收实参传来的地址。因此array[]中方括号内的数值并无实际作用,编译系统对一维数组方括号内的内容不予处理。形参一维数组的声明中可以写元素个数,也可以不写。23、字符串处理函数有哪些?24、#includeusingnamespacestd;intmain(){charc1;c1=′a′+’8’-’5’;cout<return0;}请问输出什么?25、有两个与指针变量有关的运算符:(1)&取地址运算符。(2)*指针运算符(或称间接访问运算符)26、课本中对“&”和“*”运算符再做些说明部分;27、如果先使p指向数组a的首元素(即p=a),则:(1)p++(或p+=1)。使p指向下一元素,即a[1]。如果用*p,得到下一个元素a[1]的值。(2)*p++。由于++和*同优先级,结合方向为自右而左,因此它等价于*(p++)。作用是:先得到p指向的变量的值(即*p),然后再使p的值加1。例6.5(3)程序中最后一个for语句:for(p=a;pcout<<*p;可以改写为for(p=a;pcout<<*p++;(3)*(p++)与*(++p)作用不同。前者是先取*p值,然后使p加1。后者是先使p加1,再取*p。若p的初值为a(即&a[0]),输出*(p++)得到a[0]的值,而输出*(++p)则得到a[1]的值。(4)(*p)++表示p所指向的元素值加1,即(a[0])++,如果a[0]=3,则(a[0])++的值为4。注意:是元素值加1,而不是指针值加1。(5)如果p当前指向a[i],则*(p--)先对p进行“*”运算,得到a[i],再使p减1,p指向a[i-1]。*(++p)先使p自加1,再作*运算,得到a[i+1]。*(--p)先使p自减1,再作*运算,得到a[i-1]。将++和--运算符用于指向数组元素的指针变量十分有效,可以使指针变量自动向前或向后
(7)cout<intb=123456;对b赋初值(1)cout<(2)cout<(3)cout<(4)cout<(5)cout<(6)cout<19、变量除了有数据类型属性外,还有哪些属性?20、什么是变量?什么是指针?变量和指针之间有何联系?指针有哪些属性?21、什么是数组?数组名有什么意义?用数组名作为参数有何要求?与指针之间有何联系和区别?一维和二维数组的定义、引用和初始化等22、关于用数组名作函数参数有两点要说明(1)如果函数实参是数组名,形参也应为数组名,形参不能声明为普通变量(如intarray;)。实参数组与形参数组类型应一致(现都为int型),如不一致,结果将出错。(2)需要特别说明的是:数组名代表数组首元素的地址,并不代表数组中的全部元素。因此用数组名作函数实参时,不是把实参数组的值传递给形参,而只是将实参数组首元素的地址传递给形参。形参可以是数组名,也可以是指针变量,它们用来接收实参传来的地址。如果形参是数组名,它代表的是形参数组首元素的地址。在调用函数时,将实参数组首元素的地址传递给形参数组名。这样,实参数组和形参数组就共占同一段内存单元。在用变量作函数参数时,只能将实参变量的值传给形参变量,在调用函数过程中如果改变了形参的值,对实参没有影响,即实参的值不因形参的值改变而改变。而用数组名作函数实参时,改变形参数组元素的值将同时改变实参数组元素的值。在程序设计中往往有意识地利用这一特点改变实参数组元素的值。实际上,声明形参数组并不意味着真正建立一个包含若干元素的数组,在调用函数时也不对它分配存储单元,只是用array[]这样的形式表示array是一维数组名,以接收实参传来的地址。因此array[]中方括号内的数值并无实际作用,编译系统对一维数组方括号内的内容不予处理。形参一维数组的声明中可以写元素个数,也可以不写。23、字符串处理函数有哪些?24、#includeusingnamespacestd;intmain(){charc1;c1=′a′+’8’-’5’;cout<return0;}请问输出什么?25、有两个与指针变量有关的运算符:(1)&取地址运算符。(2)*指针运算符(或称间接访问运算符)26、课本中对“&”和“*”运算符再做些说明部分;27、如果先使p指向数组a的首元素(即p=a),则:(1)p++(或p+=1)。使p指向下一元素,即a[1]。如果用*p,得到下一个元素a[1]的值。(2)*p++。由于++和*同优先级,结合方向为自右而左,因此它等价于*(p++)。作用是:先得到p指向的变量的值(即*p),然后再使p的值加1。例6.5(3)程序中最后一个for语句:for(p=a;pcout<<*p;可以改写为for(p=a;pcout<<*p++;(3)*(p++)与*(++p)作用不同。前者是先取*p值,然后使p加1。后者是先使p加1,再取*p。若p的初值为a(即&a[0]),输出*(p++)得到a[0]的值,而输出*(++p)则得到a[1]的值。(4)(*p)++表示p所指向的元素值加1,即(a[0])++,如果a[0]=3,则(a[0])++的值为4。注意:是元素值加1,而不是指针值加1。(5)如果p当前指向a[i],则*(p--)先对p进行“*”运算,得到a[i],再使p减1,p指向a[i-1]。*(++p)先使p自加1,再作*运算,得到a[i+1]。*(--p)先使p自减1,再作*运算,得到a[i-1]。将++和--运算符用于指向数组元素的指针变量十分有效,可以使指针变量自动向前或向后
intb=123456;对b赋初值
(1)cout<
(2)cout<(3)cout<(4)cout<(5)cout<(6)cout<19、变量除了有数据类型属性外,还有哪些属性?20、什么是变量?什么是指针?变量和指针之间有何联系?指针有哪些属性?21、什么是数组?数组名有什么意义?用数组名作为参数有何要求?与指针之间有何联系和区别?一维和二维数组的定义、引用和初始化等22、关于用数组名作函数参数有两点要说明(1)如果函数实参是数组名,形参也应为数组名,形参不能声明为普通变量(如intarray;)。实参数组与形参数组类型应一致(现都为int型),如不一致,结果将出错。(2)需要特别说明的是:数组名代表数组首元素的地址,并不代表数组中的全部元素。因此用数组名作函数实参时,不是把实参数组的值传递给形参,而只是将实参数组首元素的地址传递给形参。形参可以是数组名,也可以是指针变量,它们用来接收实参传来的地址。如果形参是数组名,它代表的是形参数组首元素的地址。在调用函数时,将实参数组首元素的地址传递给形参数组名。这样,实参数组和形参数组就共占同一段内存单元。在用变量作函数参数时,只能将实参变量的值传给形参变量,在调用函数过程中如果改变了形参的值,对实参没有影响,即实参的值不因形参的值改变而改变。而用数组名作函数实参时,改变形参数组元素的值将同时改变实参数组元素的值。在程序设计中往往有意识地利用这一特点改变实参数组元素的值。实际上,声明形参数组并不意味着真正建立一个包含若干元素的数组,在调用函数时也不对它分配存储单元,只是用array[]这样的形式表示array是一维数组名,以接收实参传来的地址。因此array[]中方括号内的数值并无实际作用,编译系统对一维数组方括号内的内容不予处理。形参一维数组的声明中可以写元素个数,也可以不写。23、字符串处理函数有哪些?24、#includeusingnamespacestd;intmain(){charc1;c1=′a′+’8’-’5’;cout<return0;}请问输出什么?25、有两个与指针变量有关的运算符:(1)&取地址运算符。(2)*指针运算符(或称间接访问运算符)26、课本中对“&”和“*”运算符再做些说明部分;27、如果先使p指向数组a的首元素(即p=a),则:(1)p++(或p+=1)。使p指向下一元素,即a[1]。如果用*p,得到下一个元素a[1]的值。(2)*p++。由于++和*同优先级,结合方向为自右而左,因此它等价于*(p++)。作用是:先得到p指向的变量的值(即*p),然后再使p的值加1。例6.5(3)程序中最后一个for语句:for(p=a;pcout<<*p;可以改写为for(p=a;pcout<<*p++;(3)*(p++)与*(++p)作用不同。前者是先取*p值,然后使p加1。后者是先使p加1,再取*p。若p的初值为a(即&a[0]),输出*(p++)得到a[0]的值,而输出*(++p)则得到a[1]的值。(4)(*p)++表示p所指向的元素值加1,即(a[0])++,如果a[0]=3,则(a[0])++的值为4。注意:是元素值加1,而不是指针值加1。(5)如果p当前指向a[i],则*(p--)先对p进行“*”运算,得到a[i],再使p减1,p指向a[i-1]。*(++p)先使p自加1,再作*运算,得到a[i+1]。*(--p)先使p自减1,再作*运算,得到a[i-1]。将++和--运算符用于指向数组元素的指针变量十分有效,可以使指针变量自动向前或向后
(3)cout<(4)cout<(5)cout<(6)cout<19、变量除了有数据类型属性外,还有哪些属性?20、什么是变量?什么是指针?变量和指针之间有何联系?指针有哪些属性?21、什么是数组?数组名有什么意义?用数组名作为参数有何要求?与指针之间有何联系和区别?一维和二维数组的定义、引用和初始化等22、关于用数组名作函数参数有两点要说明(1)如果函数实参是数组名,形参也应为数组名,形参不能声明为普通变量(如intarray;)。实参数组与形参数组类型应一致(现都为int型),如不一致,结果将出错。(2)需要特别说明的是:数组名代表数组首元素的地址,并不代表数组中的全部元素。因此用数组名作函数实参时,不是把实参数组的值传递给形参,而只是将实参数组首元素的地址传递给形参。形参可以是数组名,也可以是指针变量,它们用来接收实参传来的地址。如果形参是数组名,它代表的是形参数组首元素的地址。在调用函数时,将实参数组首元素的地址传递给形参数组名。这样,实参数组和形参数组就共占同一段内存单元。在用变量作函数参数时,只能将实参变量的值传给形参变量,在调用函数过程中如果改变了形参的值,对实参没有影响,即实参的值不因形参的值改变而改变。而用数组名作函数实参时,改变形参数组元素的值将同时改变实参数组元素的值。在程序设计中往往有意识地利用这一特点改变实参数组元素的值。实际上,声明形参数组并不意味着真正建立一个包含若干元素的数组,在调用函数时也不对它分配存储单元,只是用array[]这样的形式表示array是一维数组名,以接收实参传来的地址。因此array[]中方括号内的数值并无实际作用,编译系统对一维数组方括号内的内容不予处理。形参一维数组的声明中可以写元素个数,也可以不写。23、字符串处理函数有哪些?24、#includeusingnamespacestd;intmain(){charc1;c1=′a′+’8’-’5’;cout<return0;}请问输出什么?25、有两个与指针变量有关的运算符:(1)&取地址运算符。(2)*指针运算符(或称间接访问运算符)26、课本中对“&”和“*”运算符再做些说明部分;27、如果先使p指向数组a的首元素(即p=a),则:(1)p++(或p+=1)。使p指向下一元素,即a[1]。如果用*p,得到下一个元素a[1]的值。(2)*p++。由于++和*同优先级,结合方向为自右而左,因此它等价于*(p++)。作用是:先得到p指向的变量的值(即*p),然后再使p的值加1。例6.5(3)程序中最后一个for语句:for(p=a;pcout<<*p;可以改写为for(p=a;pcout<<*p++;(3)*(p++)与*(++p)作用不同。前者是先取*p值,然后使p加1。后者是先使p加1,再取*p。若p的初值为a(即&a[0]),输出*(p++)得到a[0]的值,而输出*(++p)则得到a[1]的值。(4)(*p)++表示p所指向的元素值加1,即(a[0])++,如果a[0]=3,则(a[0])++的值为4。注意:是元素值加1,而不是指针值加1。(5)如果p当前指向a[i],则*(p--)先对p进行“*”运算,得到a[i],再使p减1,p指向a[i-1]。*(++p)先使p自加1,再作*运算,得到a[i+1]。*(--p)先使p自减1,再作*运算,得到a[i-1]。将++和--运算符用于指向数组元素的指针变量十分有效,可以使指针变量自动向前或向后
(4)cout<(5)cout<(6)cout<19、变量除了有数据类型属性外,还有哪些属性?20、什么是变量?什么是指针?变量和指针之间有何联系?指针有哪些属性?21、什么是数组?数组名有什么意义?用数组名作为参数有何要求?与指针之间有何联系和区别?一维和二维数组的定义、引用和初始化等22、关于用数组名作函数参数有两点要说明(1)如果函数实参是数组名,形参也应为数组名,形参不能声明为普通变量(如intarray;)。实参数组与形参数组类型应一致(现都为int型),如不一致,结果将出错。(2)需要特别说明的是:数组名代表数组首元素的地址,并不代表数组中的全部元素。因此用数组名作函数实参时,不是把实参数组的值传递给形参,而只是将实参数组首元素的地址传递给形参。形参可以是数组名,也可以是指针变量,它们用来接收实参传来的地址。如果形参是数组名,它代表的是形参数组首元素的地址。在调用函数时,将实参数组首元素的地址传递给形参数组名。这样,实参数组和形参数组就共占同一段内存单元。在用变量作函数参数时,只能将实参变量的值传给形参变量,在调用函数过程中如果改变了形参的值,对实参没有影响,即实参的值不因形参的值改变而改变。而用数组名作函数实参时,改变形参数组元素的值将同时改变实参数组元素的值。在程序设计中往往有意识地利用这一特点改变实参数组元素的值。实际上,声明形参数组并不意味着真正建立一个包含若干元素的数组,在调用函数时也不对它分配存储单元,只是用array[]这样的形式表示array是一维数组名,以接收实参传来的地址。因此array[]中方括号内的数值并无实际作用,编译系统对一维数组方括号内的内容不予处理。形参一维数组的声明中可以写元素个数,也可以不写。23、字符串处理函数有哪些?24、#includeusingnamespacestd;intmain(){charc1;c1=′a′+’8’-’5’;cout<return0;}请问输出什么?25、有两个与指针变量有关的运算符:(1)&取地址运算符。(2)*指针运算符(或称间接访问运算符)26、课本中对“&”和“*”运算符再做些说明部分;27、如果先使p指向数组a的首元素(即p=a),则:(1)p++(或p+=1)。使p指向下一元素,即a[1]。如果用*p,得到下一个元素a[1]的值。(2)*p++。由于++和*同优先级,结合方向为自右而左,因此它等价于*(p++)。作用是:先得到p指向的变量的值(即*p),然后再使p的值加1。例6.5(3)程序中最后一个for语句:for(p=a;pcout<<*p;可以改写为for(p=a;pcout<<*p++;(3)*(p++)与*(++p)作用不同。前者是先取*p值,然后使p加1。后者是先使p加1,再取*p。若p的初值为a(即&a[0]),输出*(p++)得到a[0]的值,而输出*(++p)则得到a[1]的值。(4)(*p)++表示p所指向的元素值加1,即(a[0])++,如果a[0]=3,则(a[0])++的值为4。注意:是元素值加1,而不是指针值加1。(5)如果p当前指向a[i],则*(p--)先对p进行“*”运算,得到a[i],再使p减1,p指向a[i-1]。*(++p)先使p自加1,再作*运算,得到a[i+1]。*(--p)先使p自减1,再作*运算,得到a[i-1]。将++和--运算符用于指向数组元素的指针变量十分有效,可以使指针变量自动向前或向后
(5)cout<(6)cout<19、变量除了有数据类型属性外,还有哪些属性?20、什么是变量?什么是指针?变量和指针之间有何联系?指针有哪些属性?21、什么是数组?数组名有什么意义?用数组名作为参数有何要求?与指针之间有何联系和区别?一维和二维数组的定义、引用和初始化等22、关于用数组名作函数参数有两点要说明(1)如果函数实参是数组名,形参也应为数组名,形参不能声明为普通变量(如intarray;)。实参数组与形参数组类型应一致(现都为int型),如不一致,结果将出错。(2)需要特别说明的是:数组名代表数组首元素的地址,并不代表数组中的全部元素。因此用数组名作函数实参时,不是把实参数组的值传递给形参,而只是将实参数组首元素的地址传递给形参。形参可以是数组名,也可以是指针变量,它们用来接收实参传来的地址。如果形参是数组名,它代表的是形参数组首元素的地址。在调用函数时,将实参数组首元素的地址传递给形参数组名。这样,实参数组和形参数组就共占同一段内存单元。在用变量作函数参数时,只能将实参变量的值传给形参变量,在调用函数过程中如果改变了形参的值,对实参没有影响,即实参的值不因形参的值改变而改变。而用数组名作函数实参时,改变形参数组元素的值将同时改变实参数组元素的值。在程序设计中往往有意识地利用这一特点改变实参数组元素的值。实际上,声明形参数组并不意味着真正建立一个包含若干元素的数组,在调用函数时也不对它分配存储单元,只是用array[]这样的形式表示array是一维数组名,以接收实参传来的地址。因此array[]中方括号内的数值并无实际作用,编译系统对一维数组方括号内的内容不予处理。形参一维数组的声明中可以写元素个数,也可以不写。23、字符串处理函数有哪些?24、#includeusingnamespacestd;intmain(){charc1;c1=′a′+’8’-’5’;cout<return0;}请问输出什么?25、有两个与指针变量有关的运算符:(1)&取地址运算符。(2)*指针运算符(或称间接访问运算符)26、课本中对“&”和“*”运算符再做些说明部分;27、如果先使p指向数组a的首元素(即p=a),则:(1)p++(或p+=1)。使p指向下一元素,即a[1]。如果用*p,得到下一个元素a[1]的值。(2)*p++。由于++和*同优先级,结合方向为自右而左,因此它等价于*(p++)。作用是:先得到p指向的变量的值(即*p),然后再使p的值加1。例6.5(3)程序中最后一个for语句:for(p=a;pcout<<*p;可以改写为for(p=a;pcout<<*p++;(3)*(p++)与*(++p)作用不同。前者是先取*p值,然后使p加1。后者是先使p加1,再取*p。若p的初值为a(即&a[0]),输出*(p++)得到a[0]的值,而输出*(++p)则得到a[1]的值。(4)(*p)++表示p所指向的元素值加1,即(a[0])++,如果a[0]=3,则(a[0])++的值为4。注意:是元素值加1,而不是指针值加1。(5)如果p当前指向a[i],则*(p--)先对p进行“*”运算,得到a[i],再使p减1,p指向a[i-1]。*(++p)先使p自加1,再作*运算,得到a[i+1]。*(--p)先使p自减1,再作*运算,得到a[i-1]。将++和--运算符用于指向数组元素的指针变量十分有效,可以使指针变量自动向前或向后
(6)cout<19、变量除了有数据类型属性外,还有哪些属性?20、什么是变量?什么是指针?变量和指针之间有何联系?指针有哪些属性?21、什么是数组?数组名有什么意义?用数组名作为参数有何要求?与指针之间有何联系和区别?一维和二维数组的定义、引用和初始化等22、关于用数组名作函数参数有两点要说明(1)如果函数实参是数组名,形参也应为数组名,形参不能声明为普通变量(如intarray;)。实参数组与形参数组类型应一致(现都为int型),如不一致,结果将出错。(2)需要特别说明的是:数组名代表数组首元素的地址,并不代表数组中的全部元素。因此用数组名作函数实参时,不是把实参数组的值传递给形参,而只是将实参数组首元素的地址传递给形参。形参可以是数组名,也可以是指针变量,它们用来接收实参传来的地址。如果形参是数组名,它代表的是形参数组首元素的地址。在调用函数时,将实参数组首元素的地址传递给形参数组名。这样,实参数组和形参数组就共占同一段内存单元。在用变量作函数参数时,只能将实参变量的值传给形参变量,在调用函数过程中如果改变了形参的值,对实参没有影响,即实参的值不因形参的值改变而改变。而用数组名作函数实参时,改变形参数组元素的值将同时改变实参数组元素的值。在程序设计中往往有意识地利用这一特点改变实参数组元素的值。实际上,声明形参数组并不意味着真正建立一个包含若干元素的数组,在调用函数时也不对它分配存储单元,只是用array[]这样的形式表示array是一维数组名,以接收实参传来的地址。因此array[]中方括号内的数值并无实际作用,编译系统对一维数组方括号内的内容不予处理。形参一维数组的声明中可以写元素个数,也可以不写。23、字符串处理函数有哪些?24、#includeusingnamespacestd;intmain(){charc1;c1=′a′+’8’-’5’;cout<return0;}请问输出什么?25、有两个与指针变量有关的运算符:(1)&取地址运算符。(2)*指针运算符(或称间接访问运算符)26、课本中对“&”和“*”运算符再做些说明部分;27、如果先使p指向数组a的首元素(即p=a),则:(1)p++(或p+=1)。使p指向下一元素,即a[1]。如果用*p,得到下一个元素a[1]的值。(2)*p++。由于++和*同优先级,结合方向为自右而左,因此它等价于*(p++)。作用是:先得到p指向的变量的值(即*p),然后再使p的值加1。例6.5(3)程序中最后一个for语句:for(p=a;pcout<<*p;可以改写为for(p=a;pcout<<*p++;(3)*(p++)与*(++p)作用不同。前者是先取*p值,然后使p加1。后者是先使p加1,再取*p。若p的初值为a(即&a[0]),输出*(p++)得到a[0]的值,而输出*(++p)则得到a[1]的值。(4)(*p)++表示p所指向的元素值加1,即(a[0])++,如果a[0]=3,则(a[0])++的值为4。注意:是元素值加1,而不是指针值加1。(5)如果p当前指向a[i],则*(p--)先对p进行“*”运算,得到a[i],再使p减1,p指向a[i-1]。*(++p)先使p自加1,再作*运算,得到a[i+1]。*(--p)先使p自减1,再作*运算,得到a[i-1]。将++和--运算符用于指向数组元素的指针变量十分有效,可以使指针变量自动向前或向后
19、变量除了有数据类型属性外,还有哪些属性?
20、什么是变量?
什么是指针?
变量和指针之间有何联系?
指针有哪些属性?
21、什么是数组?
数组名有什么意义?
用数组名作为参数有何要求?
与指针之间有何联系和区别?
一维和二维数组的定义、引用和初始化等
22、关于用数组名作函数参数有两点要说明
(1)如果函数实参是数组名,形参也应为数组名,形参不能声明为普通变量(如intarray;)。
实参数组与形参数组类型应一致(现都为int型),如不一致,结果将出错。
(2)需要特别说明的是:
数组名代表数组首元素的地址,并不代表数组中的全部元素。
因此用数组名作函数实参时,不是把实参数组的值传递给形参,而只是将实参数组首元素的地址传递给形参。
形参可以是数组名,也可以是指针变量,它们用来接收实参传来的地址。
如果形参是数组名,它代表的是形参数组首元素的地址。
在调用函数时,将实参数组首元素的地址传递给形参数组名。
这样,实参数组和形参数组就共占同一段内存单元。
在用变量作函数参数时,只能将实参变量的值传给形参变量,在调用函数过程中如果改变了形参的值,对实参没有影响,即实参的值不因形参的值改变而改变。
而用数组名作函数实参时,改变形参数组元素的值将同时改变实参数组元素的值。
在程序设计中往往有意识地利用这一特点改变实参数组元素的值。
实际上,声明形参数组并不意味着真正建立一个包含若干元素的数组,在调用函数时也不对它分配存储单元,只是用array[]这样的形式表示array是一维数组名,以接收实参传来的地址。
因此array[]中方括号内的数值并无实际作用,编译系统对一维数组方括号内的内容不予处理。
形参一维数组的声明中可以写元素个数,也可以不写。
23、字符串处理函数有哪些?
24、
#include
usingnamespacestd;
intmain()
{charc1;
c1=′a′+’8’-’5’;
cout<return0;}请问输出什么?25、有两个与指针变量有关的运算符:(1)&取地址运算符。(2)*指针运算符(或称间接访问运算符)26、课本中对“&”和“*”运算符再做些说明部分;27、如果先使p指向数组a的首元素(即p=a),则:(1)p++(或p+=1)。使p指向下一元素,即a[1]。如果用*p,得到下一个元素a[1]的值。(2)*p++。由于++和*同优先级,结合方向为自右而左,因此它等价于*(p++)。作用是:先得到p指向的变量的值(即*p),然后再使p的值加1。例6.5(3)程序中最后一个for语句:for(p=a;pcout<<*p;可以改写为for(p=a;pcout<<*p++;(3)*(p++)与*(++p)作用不同。前者是先取*p值,然后使p加1。后者是先使p加1,再取*p。若p的初值为a(即&a[0]),输出*(p++)得到a[0]的值,而输出*(++p)则得到a[1]的值。(4)(*p)++表示p所指向的元素值加1,即(a[0])++,如果a[0]=3,则(a[0])++的值为4。注意:是元素值加1,而不是指针值加1。(5)如果p当前指向a[i],则*(p--)先对p进行“*”运算,得到a[i],再使p减1,p指向a[i-1]。*(++p)先使p自加1,再作*运算,得到a[i+1]。*(--p)先使p自减1,再作*运算,得到a[i-1]。将++和--运算符用于指向数组元素的指针变量十分有效,可以使指针变量自动向前或向后
return0;
}
请问输出什么?
25、有两个与指针变量有关的运算符:
(1)&取地址运算符。
(2)*指针运算符(或称间接访问运算符)
26、课本中对“&”和“*”运算符再做些说明部分;
27、
如果先使p指向数组a的首元素(即p=a),则:
(1)p++(或p+=1)。
使p指向下一元素,即a[1]。
如果用*p,得到下一个元素a[1]的值。
(2)*p++。
由于++和*同优先级,结合方向为自右而左,因此它等价于*(p++)。
作用是:
先得到p指向的变量的值(即*p),然后再使p的值加1。
例6.5(3)程序中最后一个for语句:
for(p=a;pcout<<*p;可以改写为for(p=a;pcout<<*p++;(3)*(p++)与*(++p)作用不同。前者是先取*p值,然后使p加1。后者是先使p加1,再取*p。若p的初值为a(即&a[0]),输出*(p++)得到a[0]的值,而输出*(++p)则得到a[1]的值。(4)(*p)++表示p所指向的元素值加1,即(a[0])++,如果a[0]=3,则(a[0])++的值为4。注意:是元素值加1,而不是指针值加1。(5)如果p当前指向a[i],则*(p--)先对p进行“*”运算,得到a[i],再使p减1,p指向a[i-1]。*(++p)先使p自加1,再作*运算,得到a[i+1]。*(--p)先使p自减1,再作*运算,得到a[i-1]。将++和--运算符用于指向数组元素的指针变量十分有效,可以使指针变量自动向前或向后
cout<<*p;
可以改写为
for(p=a;pcout<<*p++;(3)*(p++)与*(++p)作用不同。前者是先取*p值,然后使p加1。后者是先使p加1,再取*p。若p的初值为a(即&a[0]),输出*(p++)得到a[0]的值,而输出*(++p)则得到a[1]的值。(4)(*p)++表示p所指向的元素值加1,即(a[0])++,如果a[0]=3,则(a[0])++的值为4。注意:是元素值加1,而不是指针值加1。(5)如果p当前指向a[i],则*(p--)先对p进行“*”运算,得到a[i],再使p减1,p指向a[i-1]。*(++p)先使p自加1,再作*运算,得到a[i+1]。*(--p)先使p自减1,再作*运算,得到a[i-1]。将++和--运算符用于指向数组元素的指针变量十分有效,可以使指针变量自动向前或向后
cout<<*p++;
(3)*(p++)与*(++p)作用不同。
前者是先取*p值,然后使p加1。
后者是先使p加1,再取*p。
若p的初值为a(即&a[0]),输出*(p++)得到a[0]的值,而输出*(++p)则得到a[1]的值。
(4)(*p)++表示p所指向的元素值加1,即(a[0])++,如果a[0]=3,则(a[0])++的值为4。
注意:
是元素值加1,而不是指针值加1。
(5)如果p当前指向a[i],则
*(p--)先对p进行“*”运算,得到a[i],再使p减1,p指向a[i-1]。
*(++p)先使p自加1,再作*运算,得到a[i+1]。
*(--p)先使p自减1,再作*运算,得到a[i-1]。
将++和--运算符用于指向数组元素的指针变量十分有效,可以使指针变量自动向前或向后
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1