Microsoft Word - 第3章.doc

Size: px
Start display at page:

Download "Microsoft Word - 第3章.doc"

Transcription

1 第 3 章 内存操作 指针 常见考点 一级指针的用法和一级指针移动时的步长计算 两个指针之间的运算和地址越界问题 常量指针的相关问题 野指针导致程序执行错误的问题 多级指针的用法和多级指针移动时的步长计算 void * 和 void ** 的含义 3.1 指针基础 要点归纳 1. 指针变量 变量用于存放数据, 指针变量也是如此, 只不过指针变量存放的不是普通数据而是其他变量的地址 在 C 中提供了两种指针运算符 *: 取指针所指值运算符, 也称为解引用 &: 取地址运算符 例如, 在定义 int x,*px 之后 : px=&x 将整数变量 x 的地址赋给整数指针 px, 即 px 指针变量中存放 x 的地址值, 如图 3.1 所示 例如 : x=*px px=&(*px) x=*(&x) // 将 px 所指的值赋给 x // 将 px 所指值的地址赋给 px, 等同于 px=px // 将 x 的地址中的值赋给 x, 等同于 x=x px &x x &x 图 3.1 px 指针指向变量 x 62

2 第 3 章内存操作 指针 2. 指针变量的定义和初始化 指针变量也是一个变量, 通常简称为指针, 所以具有和普通变量一样的属性, 在使用之前也需要定义, 在指针定义的同时也可以进行初始化 指针定义的一般形式如下 : 数据类型 * 指针名 ; 其中指针变量名前的 * 号仅是一个说明符, 表示其后的名称是一个指针变量名 这里的 * 号并没有访问指针目标的含义 与普通变量不同, 指针定义时的数据类型并不是指针变量本身的数据类型, 而是其所指目标数据的数据类型, 称之为基类型 指针初始化的一般形式如下 : 数据类型 * 指针名 = 初始地址值 ; 指针初始化的过程是系统按照指定的基类型和存储类别在相应存储区域为该指针分配存储空间, 并把初始值置入指针的存储空间中, 从而该指针就指向了初始地址值所给定的内存空间 例如 : double x; double *px=&x; 把变量 x 的地址 ( 如 0x12ff40) 作为初值赋给 double 型指针 px, 从而 px 指向了变量 x 的存储空间 double *px=&x 等同于 double *p,p=&x 有关指针的注意事项如下 : 在定义指针变量后系统为该指针变量分配一个地址大小的存储单元, 指针变量中存放的是地址值 无论指针变量的基类型是何种数据类型, 占用的内存大小都是相同的, 例如 char *p1;double*p2;, 在 32 位系统中有 sizeof(p1)=sizeof(p2)=4, 即 p1 和 p2 两个指针变量均占用 4 个字节 尽管任何指针变量中存放的都是地址值, 但一个指针变量只能存放相同基类型的数据地址 指针变量的存储单元和它指向的数据空间是两个不同的存储空间 通过指针变量可以对所指数据进行间接操作 ( 相应地通过变量名对其数据的操作看成是直接操作 ), 指针变量所指的空间可以看成是匿名变量空间 一个指针变量本身占用的空间很小, 但可以指向一整块很大的连续空间 这个一整块的连续空间通常采用第 1 章介绍的动态分配函数分配, 存放在堆空间中 指针与地址有什么区别? 指针意味着已经有一个指针变量存在, 其值是一个地址, 指针变量本身也有地址 ; 而地址本身并不代表有任何变量存在, 地址仅表示内存空间的一个位置 3. 指针运算 指针运算是以指针变量中的地址值为运算量进行的运算, 所以指针运算实际上是地址 63

3 直击招聘 程序员面试笔试语言深度解析 C 的计算, 如图 3.2 所示 指针与整数的加减 : 一个地址量加上或减去一个整数 n 是以该地址量为基点的前方或后方的第 n 个数据的地址 例如对于基类型为 type 的指针 p,p±n 的结果是地址值 p±n*sizeof(type), 其中 sizeof(type) 称为步长, 显然步长与指针变量的基类型相关 指针自加 1 自减 1: 指针 ++ 运算后指向下一个数据的位置, 指针 -- 运算后指向上一个数据的位置 运算后指针地址值的变化量取决于指针的基类型 两个指针相减 : 两个地址量相减, 并非它们的两个地址值之间直接做减法运算, 而是两指针所指地址之间的数据个数 两个指针的关系比较 : 当两个指针都指向一整块连续空间中的元素时, 它们之间的关系运算表示它们指向地址的前后关系, 通常指向后方的地址大于指向前方的地址 如果两个指针不是指向同一连续空间中的元素, 它们的关系比较是没有意义的 指针与一般整数常量或变量之间的关系运算也是无意义的 但是指针可以和零 ( 指针零用 NULL 表示 ) 之间进行等于或不等于的关系运算, 即 p==null 或 p!=null, 以判定指针 p 是否为一空指针 NULL( 与 0 等效 ):NULL 表示空指针值, 它是一个特殊的指针值 一旦某个指针赋值为 NULL, 就将该指针值设置为 0, 表示指针变量值没有意义, 就不能再在该指针所指向的内存中存储数据, 例如 int *p=null,*p=10; 是错误的 但可以再修改指针 p 的值为其他有效的地址值, 例如 int *p=null,n=10; p=&n; 是正确的 地址 0x1000 0x1004 0x1008 0x100c 0x1010 0x1014 0x1018 0x101c 值 p q 共有 n=8 个元素, 每个元素占用 m=4 个字节, 即步长为 4 q = p + 5 = 0x *m = 0x1014 q - p = (0x1014-0x1000)/m = 5 r = p + 9, 越界 p<q,q>p 为真 p+q p*q p/q, 没有意义 r 图 3.2 指针之间的运算 4. 野指针一个指针变量的值 ( 地址值 ) 为垃圾值的指针变量称为野指针 产生野指针的原因及解决办法如下 : 指针变量定义时没有被初始化 解决办法是在定义指针时初始化, 可以是具体的地址值, 也可以是 NULL 64

4 第 3 章内存操作 指针 指针 p 被 free 或者 delete 之后没有置为 NULL, 后面还使用它 解决办法是指针指向的内存空间被释放后指针应该指向 NULL 指针操作超越了所指变量的作用域 解决办法是在所指变量的作用域结束前释放掉变量的地址空间, 并让指针指向 NULL 野指针的解决方法是编程规范的基本原则, 在编程中使用指针时一定要避免产生野指针, 在使用指针前一定要检验指针的合法性 面试真题解析 面试题 3-1 字符指针 浮点数指针以及函数指针这 3 种类型的变量哪个占用的内存 最大? 为什么? 答 : 指针变量也占用内存单元, 而且所有类型的指针变量占用的内存大小都是相同的 也就是说, 不管是指向何种对象的指针变量, 它们占用的内存空间的字节数都是一样的, 通常是一个机器字长 面试题 3-2 以下对 C 语言的 指针 的描述不正确的是 ( ) A.32 位系统下任何类型的指针的长度都是 4 个字节 B. 指针的数据类型声明的是指针实际指向内容的数据类型 C. 野指针是指向未分配或者已释放的内存地址 D. 当使用 free 释放掉一个指针内容后, 指针变量的值被置为 NULL 答 : 当使用 free 释放掉一个指针内容后, 只是表示它指向的内容被释放了, 但该指针 变量的值并没有置为 NULL 答案为 D 面试题 3-3 有如下定义, 则下列符号中均正确地代表 x 的地址的选项是 ( ) int x,*p; p=&x; A.&x p &*x B.*&x p C.*p &p x D.&x &*p p 答 :&x 为 x 的地址,p=&x, 所以 p 可以表示 x 的地址,&*p 即为 p 答案为 D 面试题 3-4 有下列基本类型相同的指针 p1 p2, 则下列运算不合理的是 ( ) A.p1/=5 B.p1-p2 C.p1=p2 D.p1==p2 答 : 对指针除以 5 是没有意义的 答案为 A 面试题 3-5 若有定义 int i,j=2,*p=&i;, 则能完成 i=j 赋值功能的语句是 ( ) A.i=*p; B.*p=*&j; C.i=&j; D.i=**p; 答 :p 指向变量 i, 而 *&j=j, 所以 *p=*&j 的功能是执行 i=j 答案为 B 65

5 直击招聘 程序员面试笔试语言深度解析 C 面试题 3-6 若有以下定义和赋值语句 : int a=4,b=3,*p,*q,*w; p=&a; q=&b; w=q; q=null; 则以下选项中错误的语句是 ( ) A.*q=0; B.w=p; C.*p=a; D.*p=*w; 答 :q 是指针变量, 已通过 q=null 语句将其置为 NULL, 不能再设置所指向的数据 答案为 A 面试题 3-7 以下程序的输出是( ) int *pint=0; pint +=6; printf("%d\n",pint); A.12 B.72 C.24 D.0 E.6 F. 任意数 答 :int *pint=0( 与 int *pint=null 等同 ) 是在定义指针变量 p 的同时把 p 的值设置 为 0, 执行 pint+=6,pint=0+6*sizeof(int)=24 答案为 C 尽管 pint 中的地址值为 24, 但作为地址值是没有意义的, 当执行 *p=10 时出现程序崩溃 面试题 3-8 以下代码执行后 p1+5 和 p2+5 分别是多少? unsigned char *p1; unsigned long *p2; p1=(unsigned char *)0x801000; p2=(unsigned long *)0x810000; 答 :p1 是基类型为 unsigned char 的指针变量, 其步长为 sizeof(unsigned char)=1, p1+5=p1+5*sizeof(unsigned char)=0x =0x p2 是基类型为 unsigned long 的指针变量, 其步长为 sizeof(unsigned long)=4,p2+5=p1+5*sizeof(unsigned long)= 0x =0x 面试题 3-9 已有变量定义和函数调用语句: int a=25; print_value(&a); 则下面函数的正确输出结果是 ( ) void print_value(int *x) { 66

6 第 3 章内存操作 指针 printf("%x\n",++*x); A.25 B.26 C.19 D.1a 答 :a=25, 执行 print_value(&a) 时 x 指向 a 变量,++*x 等同于 ++(*x), 将 *x( 即 25) 加 1 后返回,26 对应的十六进制数为 1a 答案为 D 面试题 3-10 以下程序的输出结果是什么? { int a; int *p; p=&a; *p=0x500; a=(int)(*(&p)); a=(int)(&(*p)); if(a==(int)p) else printf("equal!\n"); printf("not equal!\n"); 答 : 见程序注释, 输出结果为 equal! 面试题 3-11 以下程序的输出结果是什么? { int *p1, *p2; int value; p1=(int *)0x500; p2=(int *)0x508; value=p2-p1; printf("%d\n",value); // 让指针 p 指向整型变量 a // 置 p 指向的变量 a 的值为 0x500 // 相当于 a=(int)p, 则 a 为 p 中的地址值, 如 0x12ff44 // 相当于 a=(int)p, 则 a 为 p 中的地址值, 如 0x12ff44 //a 等于 p 中的地址值, 所以为真 答 :p1 p2 指针的基类型为 int, 通过强制转换让 p1 的值为 0x500 p2 的值为 0x508, value=p2-p1=(0x508-0x500)/sizeof(int)=8/4=2 所以输出 2 面试题 3-12 有以下代码: unsigned char *p1; unsigned long *p2; p1=(unsigned char *)0x801000; p2=(unsigned long *)0x810000; 67

7 直击招聘 程序员面试笔试语言深度解析 C 在 32 位系统中执行后 p1+5 和 p2+5 的值分别是 ( ) A.0x x B.0x80100A 0x81000A C.0x x D.0x x 答 :p1 的基类型为 unsigned char, 该类型数据的长度为 1 个字节, 所以 p1+5= 0x *1=0x p2 的基类型为 unsigned long, 该类型数据的长度为 4 个字节, 所以 p2+5=0x *4=0x 答案为 D 面试题 3-13 以下程序执行时会输出什么? 为什么? int main(void) { char *ptr="linux"; printf("[%c],",*ptr++); printf("[%c]\n",*ptr); return 0; 答 :ptr 指向常量字符串 "Linux",*ptr++ 返回 ptr 指向的字符 L, 并自增 1 指向 i 字符 再执行 *ptr 返回 i 输出结果为 [L],[i] 面试题 3-14 请问以下代码有什么问题: #include <string.h> int main() { char a; char *str=&a; strcpy(str,"hello"); printf(str); return 0; 答 : 程序中没有为字符指针变量 str 分配内存空间就将一个字符串复制到它所指的地址中 虽然可以正确地输出结果, 但因为越界进行内在读写而导致程序崩溃 程序应该改为如下 : #include <string.h> #include <malloc.h> int main() { char a; char *str=&a; str=(char *)malloc(6*sizeof(char)); 68

8 第 3 章内存操作 指针 strcpy(str,"hello"); printf(str); free(str); return 0; 面试题 3-15 以下这段程序中有什么错误 : void swap(int *p1,int *p2) { int *p; *p=*p1; *p1=*p2; *p2=*p; 答 : 在 swap 函数中 p 是一个野指针, 并没有分配指向的空间, 当执行 *p=*p1 时会导致程序执行崩溃 如果要交换 p1 p2 指向的数据, 可以改为 : void swap(int *p1,int *p2) { int p; p=*p1; *p1=*p2; *p2=p; 面试题 3-16 请问执行 Test 函数会有什么样的结果? #include <string.h> #include <malloc.h> void Test(void) { char *str=(char *)malloc(100); strcpy(str,"hello"); free(str); if(str!=null) { strcpy(str,"world"); printf(str); 答 : 因为执行 free(str) 语句后 str 成为野指针, 其中地址值是不为 NULL 的垃圾地址, 将 "world" 字符串存放在垃圾地址空间中, 后果难以预料, 非常危险 面试题 3-17 下面这段代码是把中英文混合字符串( 汉字用两个字节表示, 特点是 69

9 直击招聘 程序员面试笔试语言深度解析 C 第 1 个字节的最高位为 1) 中的大写字母转化为小写字母, 请找出其中的 bug, 注意各种异常情况 for (char *piterator=szword; *piterator!=0; piterator++) { if(*piterator&0x80!=0) piterator++; else if(*piterator>='a'&&*piterator<='z') piterator+=32; 答 : 上述代码中有两处错误, 即位运算符 & 的优先级较!=0 低, 应该加括号 ;piterator += 32 移动指针是错误的 修改代码如下 : for (char *piterator=szword;*piterator!=0;piterator++) { if((*piterator&0x80)!=0) // 为汉字 piterator++; else if(*piterator>='a'&&*piterator<='z') *piterator+=32; 3.2 常量和常量指针 要点归纳 1. 常量 在程序执行期间其值不能被改变的量称为常量, 常量分为字面常量和符号常量 1 字面常量 字面常量只能引用不能修改, 如 123 等, 通常保存在程序符号表中, 程序无法读取字面常量的地址, 只有一个例外, 即字符串常量 例如 : char *p="abc"; 其中 "abc" 就是一个字符串常量, 它存放在静态数据区, 由 p 指针指向它, 不能通过 p 指针修改该常量 上述方式定义字符串常量的注意事项如下 : 像 char *p="abc" 这种写法在 C 中实在太多了, 所以许多 C 编译器不会指出编译错误, 但程序员必须理解其含义, 其中 "abc" 为常量, 程序员最好采用 const char *p="abc" 定义, 这样在其后执行 p[0]='x' 或者 *p='x' 时会发生 l-value specifies const object( 左值说明的是一个常 70

10 第 3 章内存操作 指针 量对象 ) 的编译错误, 以便指定错误原因 那么 int *p=123 可不可以呢? 结论是不允许的, 尽管 123 也是常量, 这里编译器认为是将 123 作为地址存放在指针变量 p 中, 而 123 是整数, 正确的做法是 int *p=(int *)123, 即将 123 转换为地址值赋给 p 当然这种做法是有危险的 由于 p 指向的常量字符串不是通过 malloc 函数分配的, 执行 free(p) 会导致程序崩溃 2 符号常量 符号常量主要有两种定义方法, 第 1 种是用宏定义实现 ( 即宏常量 ), 例如 : #define PI 3.14 // 定义一个常量为 3.14 的宏 PI 实际上,#define 是定义字面常量 第 2 种是用 const 定义 ( 即 const 常量 ),const 的意思是 一个不能被改变的变量 例如 : const int n=123; n++; n=10; // 通过 const 定义一个 int 型常量 n // 错误 : 不能修改常量 // 错误 : 不能修改常量 上述两种方法的区别如下 : 前者是宏替换命令, 不是语句, 所以不以 ; 号结尾, 后者是定义, 以 ; 号结尾 前者在预处理时进行替换, 后者定义的常量像变量一样 ( 称为常变量 ), 只是其值不能改变 const 常量有数据类型, 而宏常量没有数据类型 编译器对前者进行类型安全检查, 对后者不进行类型安全检查 const 常量的注意事项如下 : 实际上 const 修饰的是只读变量, 具有变量的某些属性 例如在一个函数内定义 const int n=123;,n 像局部变量一样是在栈空间中分配的 例如又定义 const in m=13;,m 和 n 的存储地址是不同的 用 const 修饰的常量的值不能修改, 所以必须在定义时初始化 可以把一个常量赋值给非常量变量, 例如 int k=n 是正确的 可以把 const 常量的地址赋给指针变量, 例如 const int i=10;int *p=&i; C 中默认这种隐式转换, 但在 C++ 中出现 cannot convert from 'const int *' to 'int *' 编译错误, 需要采用强制转换, 即 int *p=(int *)&i 2. const 指针常量 在定义指针时用 const 关键字进行修饰, 称为 const 指针常量, 有以下几种情况 71

11 直击招聘 程序员面试笔试语言深度解析 C 1 常量指针 用 const 修饰 * 时称为常量指针, 这样不能通过该指针变量修改指向的内容 例如 : const char *p; 这样不能通过 p 指针修改指向的内容, 否则会出现 l-value specifies const object( 左值说明为常对象 ) 的编译错误 例如 : const char *p; // 定义常量指针 p char *q; q=(char *)malloc(10*sizeof(char)); strcpy(q,"123"); p=q; // 正确 : 让 p 也指向 "123" *q='x'; // 正确 : 可以通过非常量指针修改所指内容,p 指向的字符串改变为 "x23" *p='y'; // 错误 : 不能通过常量指针修改所指内容 2 常量指针变量 在 C++ 中还可以用 const 修饰指针变量名, 称为常量指针变量, 例如 : char * const p; 表示指针 p 是一个常量指针变量,p 的值不能再发生改变, 所以必须初始化 一旦初始化, p 不能指向其他数据, 但可以通过指针 p 修改所指的内容 例如 : char *q; q=(char *)malloc(10*sizeof(char)); strcpy(q,"abc"); char * const p=q; *p='1'; p=q; 3 指针常量 // 定义常量指针变量 p // 正确 : 可以通过 p 修改指向的数据 // 错误 : 不能再修改 p 的值, 即使 p=p 也不行 指针常量既为常量指针, 又是常量指针变量 例如 : const char * const p; 表示指针 p 是一个指针常量, 前一个 const 修饰指针变量的定义, 后一个 const 修饰变量名 指针 p 必须初始化, 并且 p 的值和指向的内容都不能修改 例如 : char *q; q=(char *)malloc(10*sizeof(char)); strcpy(q,"abc"); const char * const p=q; *p='1'; p=q; // 定义指针常量 p // 错误 : 不能修改指向的数据 // 错误 : 不能修改指针值 72

12 第 3 章内存操作 指针 归纳起来,3 种类型的 const 指针常量的差别如图 3.3 所示 常量指针 :const char *p=&x;(const 修饰 *, 表示不能修改 p 指向的内容 ) p x x 的值可以修改 ( 除非为常量 ) 但不能通过指针 p 修改指针 p 可以指向其他变量 y 常量指针变量 :char * const p=&x;(const 修饰变量名, 表示不能修改变量 p) p x 可以通过指针 p 修改 x 的值指针 p 不能指向其他变量 y 指针常量 :const char * const p=&x;( 前一个 const 修饰 *, 后一个修饰变量名 ) p x x 的值可以修改 ( 除非为常量 ) 但不能通过指针 p 修改指针 p 不能指向其他变量 y 图 种类型的常量指针的差别 面试真题解析 面试题 3-18 有如下程序 : char *GetStr() { char *tmp; tmp="123"; return tmp; { printf("%s\n",getstr()); 问上述程序会输出 "123" 吗?"123" 创建在堆上还是栈上?"123" 的空间是什么时候释放的? 答 : 执行 tmp="123" 时, 由于之前没有为指针 p 动态分配空间来存放 "123", 所以编译 73

13 直击招聘 程序员面试笔试语言深度解析 C 器把 "123" 作为常量放到静态数据区中 实际上,char *tmp 和 tmp="123" 即为 char *tmp="123", 等同于 const char *tmp="123" 所以"123" 既不在堆中, 也不在栈中存放, 而是放到静态数据区, 它在程序执行结束时自动释放 面试题 3-19 指出以下程序的错误 { char *p="abcd"; p[0]='a'; printf("%s\n",p); 答 : 该程序没有编译问题, 但会出现执行错误 字符串 "ABCD" 是常量, 存放在静态数据区, 其首地址保存在 p 变量中 p 是一个字符指针, 指向这个字符串常量, 常量是不能修改的, 所以执行 p[0]='a'( 或者 *p='a') 时出错 实际上, 定义指针变量 p 并初始化时就有问题, 应为 cosnt char *p="abcd", 这样对 p[0] 的赋值操作是不合法的, 会出现 l-value specifies const object( 左值为常数对象 ) 的编译错误 如果改为如下程序, 编译和执行都没有问题 : #include <string.h> #include <malloc.h> { char *p; p=(char *)malloc(5*sizeof(char)); strcpy(p,"abcd"); *p='a'; printf("%s\n",p); 面试题 3-20 以下代码有什么错误? char *s="aaa"; printf("%s",s); s[0]='b'; printf("%s",s); 答 :"AAA" 是字符串常量 s 是指针, 指向这个字符串常量, 所以在定义 s 的时候就有问题, 应该改为 : const char* s="aaa"; 74

14 第 3 章内存操作 指针 因为是常量, 所以对 s[0] 的赋值操作是不合法的 面试题 3-21 以下程序的输出结果是( ) const int i=0; int *j=(int *)&i; *j=1; printf("%d,%d",i,*j); A.0,1 B.1,1 C.1,0 D.0,0 答 :i 为整型常量, 和变量一样有一个存储空间 ( 如地址是 0x12ff44),j 为非常量整型指针, 在执行 int *j=(int *) &i 时为指针变量 j 分配空间 ( 如地址是 0x12ff40), 将 i 的地址转换为整数 ( 如 0x12ff44) 存放在 j 中, 此时 *j=i=0; 但执行 *j=1 时并不是修改 i 的值 ( 其为常量不能修改 ), 而是为 j 分配另外一个指向的整数空间并存放整数 1, 即 *j=1,i 值仍然为 0, 所以答案为 A 面试题 3-22 简述以下定义的区别: char *const p; char const *p; const char *p; 答 : 在 char * const p 中 const 修饰变量 p,p 指针值不能修改, 指针 p 指向的内容可以修改 在 const char *p 中 const 修饰 *, 表示指针 p 指向的内容不能修改, 但 p 指针值可以修改 char const *p 和 const char *p 相同 面试题 3-23 若有定义 int b, 以下哪两个是等同的? A.const int* a = &b; B.int * const a = &b; C.const int * const a = &b; D.int const * const a = &b; 答 : 选项 A 定义常量指针 b(const 修饰 *) 选项 B 定义常量指针变量 b(const 修饰变量名 ) 选项 C 和 D 都是定义指针常量 b( 两个 const 分别修饰 * 和变量名 ), 所以 C 和 D 等同 面试题 3-24 下面 3 行程序代码的效果一样吗? int b; (1)const int *a=&b; (2)int const *a=&b; (3)int * const a=&b; A.(2)=(3) B.(1)=(3) C.(1)=(2) D. 都不一样 E. 都一样 答 :(1) 和 (2) 中 const 都是修饰 *, 即指向的内容不能修改 答案为 C 75

15 直击招聘 程序员面试笔试语言深度解析 C 面试题 3-25 给出以下定义, 下列 ( ) 操作是合法的 char a[]="hello"; char b[]="world"; const char *p1=a; char* const p2=b; A.p1++; B.p1[2]='w'; C.p2[2]='l'; D.p2++; 答 :p1 是常量指针 (const 修饰 *, 不能通过 p1 修改指向的内容, 但 p1 的值可以改变 ), 所以选项 A 正确, 选项 B 错误 p2 为常量指针变量 (const 修饰变量名,p2 值不能修改, 但 p2 指向的内容可以修改 ), 所以选项 C 正确, 选项 D 错误 答案为 A C 面试题 3-26 有以下定义: int a=248,b=4; int const c=21; const int *d=&a; int *const e=&b; int const *f=&a; 问下列表达式中 ( ) 是有问题的 A.d=&b; B.*d=43; C.*e=34; D.e=&a; E.f=0x321f; 答 : 在 const int *d=&a 和 int const *f=&a 中,const 修饰 *, 定义的 d f 指针值可以修 改, 而指针 d f 指向的内容不能修改 在 int * const e=&b 中,const 修饰变量名,e 指针 值不能修改, 指针 e 指向的内容可以修改 选项 B 修改了指针 d 指向的数据 ; 选项 D 修改了指针 e 的值 ; 选项 E 修改了指针 f 指 向的数据, 所以选项 B D 和 E 是错误的 3.3 多级指针 要点归纳 1. 多级指针定义在 C 中除了允许指针指向普通数据之外, 还允许指针指向另外的指针, 这种指向指针的指针称为多级指针 当一个指针指向普通数据时称为一级指针, 指向一级指针的指针称为二级指针, 指向二级指针的指针称为三级指针, 以此类推 例如有以下定义 : 76

16 第 3 章内存操作 指针 int *p,**pp,***ppp; 其中,p 为一级指针,pp 为二级指针,ppp 为三级指针 2. 多级指针的运算 多级指针运算与一级指针运算类似 需要注意的是, 在访问一个指针的目标时只有一级指针的目标才是要处理的数据, 多级指针的目标仍是一个指针 例如 : int x=10; int *p=&x; int **pp=&p; int ***ppp=&pp; 其示意图如图 3.4 所示 如同一级指针常用来操作一维数组元素, 多级指针也常与多维数组一起使用, 将在下一章讨论 ppp pp p x 图 3.4 多级指针的示意图 例如, 分析以下程序的输出结果 #include <malloc.h> { int *p,**pp; p=(int *)malloc(3*sizeof(int)); *p=1; *(p+1)=2; *(p+2)=3; pp=&p; printf("%d,",**pp); printf("%d\n",*(*pp+1)); 在上述程序中,p 为一级指针, 为它分配了 3 个整数的空间, 分别存放整数 pp 为二级指针, 其值为 p 的地址 在一次执行时各个变量的地址如图 3.5 所示 ( 每次执行可能地址不同 ) 相关表达式的含义如下 p: 为 p 所指元素的地址, 即为数据 1 的地址 562eb8 p+1: 为 p 所指元素的下一个元素的地址, 即 p+sizeof(int) 为数据 2 的地址 562ebc, 其中 sizeof(int) 为一级指针 pp 的步长 77

17 直击招聘 程序员面试笔试语言深度解析 C 地址 562eb8 562ebc 562ec0 pp 地址 :12ff40 图 3.5 p 地址 :12ff44 在一次执行时各个变量的地址 pp: 为 pp 所指变量 p 的地址, 即 12ff44 pp+1: 为 pp 所指变量 p 的下一个地址, 即 pp+sizeof(p)=12ff48, 其中 sizeof(p) 为二级指针 pp 的步长, 这里超界 *pp: 为 pp 所指变量 p 的值, 即 *pp=p, 为 p 的值 12ff44 *pp+1:pp 所指变量 p 的值加 1,*pp+1=p+1, 为数据 2 的地址 562ebc **pp:**pp=*(*pp)=*p=1 *(*pp+1):*(*pp+1)=*(p+1)=2 所以上述程序的输出为 1,2 对于二级指针 pp,**pp 运算是正确的, 表示解两次引用, 其结果是元素值 但取地址运算符 & 不能连续多次使用, 如有定义 int n=10, 而 pp=&&n 或者 pp=&(&n)) 都是错误的 3. void * 和 void ** 的含义 void 的字面意思是 无类型,void * 则为 无类型指针,void * 可以指向任何类型的数据 void a; 语句编译时会出错, 提示 illegal use of type 'void'( 非法使用 void 类型 ) 不过, 即使 void a 的编译不会出错, 它也没有任何实际意义 void 真正发挥的作用在于对函数返回值的限定和对函数参数的限定 void * 的一个重要应用是在强制类型转换中把赋值运算符右边指针的类型转换为左边指针的类型 例如 : double *p1; int *p2; p1=p2; 其中 p1 = p2; 语句会编译出错, 提示 '=' : cannot convert from 'int *' to 'float *', 必须改为 : p1=(double *)p2; 78

18 第 3 章内存操作 指针 而 void * 不同, 任何类型的指针都可以直接赋值给它, 无须进行强制类型转换 : void *p1; int *p2; p1=p2; // 正确 : 可以将任何有类型地址赋给无类型指针变量 这并不意味着 void * 也可以无须强制类型转换地赋给其他类型的指针 因为 无类型 可以包容 有类型, 而 有类型 不能包容 无类型 下面的语句会出现 '=' : cannot convert from 'void *' to 'int *' 的编译错误 : void *p1; int *p2; p2=p1; // 错误 : 不能将任何无类型地址赋给有类型指针变量 但改为强制类型转换就正确了 : p2=(int *)p1; // 正确 : 将无类型地址强制转换为有类型地址 这就是 malloc 等库函数原型的返回值为 void * 的原因 那么 void ** 又是什么呢? 例如 *((void **)&f ), 其中 (void **) 可以被看成 (void * *), 首先做前面的 (void *), 即 (void *)&f, 将变量 f 的地址转换为一个无类型的地址, 再做后面的 * 转换, 根据 &f 的基类型将这个无类型的地址转换为基类型地址 也就是说,(void **)&f 相当于 &f 最后再做最外面的* 运算, 它不同于 (void **) 中的 *( 仅作为说明符, 就像 int *p 定义中的 *), 而是取值运算符, 所以 *((void **)&f) 相当于 *&f, 即 f 例如 : int n=10; //n 的地址为 12ff44 int *p=&n; //p 的值为 12ff44 printf("%d\n",*(void *)p); // 错误 : 不能对无类型地址取值结果出现编译错误, 这里将指向整型变量 n 的地址转换为 void * 地址后再取它的值是错误的, 也就是说, 实际上是取无类型地址的值 改为以下语句就正确了 : printf("%d\n",*(void **)p); // 正确 :(void **)p 相当于 (int *)(void *)p 因为 *(void **)p 相当于 *p, 所以输出 p 指向变量 n 的值, 即 面试真题解析 面试题 3-27 以下程序的输出结果是 ( ) { int **k,*j,i=100; 79

19 直击招聘 程序员面试笔试语言深度解析 C j=&i; k=&j; printf("%d\n",**k); A. 运行错误 B.100 C.i 的地址 D.j 的地址答 :j=&i,j 的值就是 i 的地址, 即 *j=i=100 执行 k=&j 将 j 的地址赋给 k, 即 *k=j, 所以 **k=*j=i=100 答案为 B 面试题 3-28 有以下程序段: { int a=5,*b,**c; c=&b;b=&a; 程序在执行 c=&b;b=&a; 语句后表达式 **c 的值是 ( ) A. 变量 a 的地址 B. 变量 b 中的值 C. 变量 a 中的值 D. 变量 b 的地址 答 :c 为二级指针, 在执行 c=&b,b=&a; 后 **c=*b=a=5 答案为 C 面试题 3-29 (void *)ptr 和 *(void **)ptr 的结果是否相同? 其中 ptr 为同一个指针 答 : 不相同 (void *)ptr 返回的是将 ptr 转换成的无类型的地址 在 *(void **)ptr 中, (void **)ptr 相当于 ptr, 所以该表达式返回 ptr 指向变量的值 面试题 3-30 在 32 位编译器下,sizeof(void) 的值是 ( ) A.0 B.4 C. 这取决于主机的字的大小 D.8 E. 编译错误或者为 1 答 :void 表示 无类型, 在 VC++ 中会出现 illegal sizeof operand( 非法 sizeof 运算 量 ) 的编译错误 在 GCC 中为 1 答案为 E 3.4 自测题和参考答案 自测题 3-1 若有定义 int *p1,*p2,m=5,n;, 以下均是正确赋值语句的选项是 ( ) A.p1=&m;p2=&p1; B.p1=&m;p2=&n;*p1=*p2; C.p1=&m;*p1=*p2; D.p1=&m;*p2=*p1; 3-2 以下程序段完全正确的是 ( ) A.int *p; scanf("%d",&p); 80

20 第 3 章内存操作 指针 B.int *p; scanf("%d",p); C.int k,*p=&k; scanf("%d",p); D.int k,*p; *p=&k; scanf("%d",p); 3-3 以下程序中 p 和 "hello,world" 分别存储在内存中的哪个区域? int main() { char *p="hello,world"; return 0; A. 栈 堆 B. 栈 栈 C. 堆 只读存储区 ( 静态数据区 ) D. 栈 只读存储区 ( 静态数据区 ) 3-4 执行以下程序有什么问题? #include <malloc.h> { int i,*p; p=(int *)malloc(3*sizeof(int)); for(i=0;i<3;i++) *(p+i)=i+1; p++; free(p); 3-5 以下程序执行后的输出结果是 ( ) { int a=1; int b=3; int c=5; int *p1=&a; int *p2=&b; int *p=&c; *p=*p1*(*p2); printf("%d\n",c); A.1 B.2 C.3 D 以下程序有错, 错误的原因是 ( ) 81

21 直击招聘 程序员面试笔试语言深度解析 C { int *p,i; char *q,ch; p=&i; q=&ch; p=40; *p=*q; A.p 和 q 的类型不一致, 不能执行 *p=*q B.*p 中存放的是地址值, 因此不能执行 p=40 C.q 没有指向具体的存储单元, 所以 *q 没有实际意义 D. 以上都不对 3-7 给出以下程序的执行结果 { int k=2,m=4,n=6; int *pk=&k,*pm=&m,*p; *(p=&n)=*pk*(*pm); printf("%d\n",n); 3-8 给出以下程序的执行结果 { char a[]="language",b[]="programe"; char *p1,*p2; int k; p1=a;p2=b; for(k=0;k<=7;k++) if(*(p1+k)==*(p2+k)) printf("%c",*(p1+k)); printf("\n"); 3-9 对于下面的代码, 说法正确的是 ( ) char *s1="hello world"; char s2[]="hello world"; 82

22 第 3 章内存操作 指针 s1[2]='e'; // 1 s2[2]='e'; // 2 *(s1+2)='e'; // 3 *(s2+2)='e'; // 4 A. 语句 2 4 是非法的 B. 语句 3 4 是非法的 C. 语句 1 3 是非法的 D. 仅语句 1 是非法的 E. 仅语句 2 是非法的 F. 语句 1~4 都是合法的 3-10 以下程序的编译和执行结果是 ( ) { int i=11; int const *p=&i; p++; printf("%d",*p); A.11 B.12 C.Garbage value( 垃圾值 ) D.Compile error( 编译错误 ) E.None of above( 以上都不对 ) 3-11 执行以下程序有什么问题? #include <malloc.h> { int i,*p,**pp=&p; p=(int *)malloc(3*sizeof(int)); for(i=0;i<3;i++) *(p+i)=i+1; printf("%d\n",**(++pp)); free(p); 3-12 给出以下程序的输出结果 #include <malloc.h> { int i,*p,*q,**pp; p=(int *)malloc(3*sizeof(int)); for(i=0;i<3;i++) 83

23 直击招聘 程序员面试笔试语言深度解析 C *(p+i)=i+1; q=(int *)malloc(4*sizeof(int)); for(i=0;i<3;i++) *(q+i)=i+5; pp=(int **)malloc(2*sizeof(int *)); *pp++=p; *pp=q; printf("%d,%d\n",*(*(pp+1)+1),**(--pp)); free(p); free(q); free(pp); 参考答案 3-1 答 : 在选项 A 中,p2=&p1 错误, 因为 &p1 是二级地址 在选项 C 中,*p1=*p2 错误, 因为 *p2 是垃圾值 在选项 D 中,*p2=*p1 错误, 因为 p2 没有分配指向的空间, 为野指针 答案为 B 3-2 答 :scanf 函数的输入项需要给出输入变量的地址 选项 A 用于输入一个地址值, 错误 选项 B 没有分配指针 p 指向的空间, 错误 选项 D 没有为指针 p 分配指向的空间, 而将变量 k 的地址放在指向的空间中, 错误 答案为 C 3-3 答 :p 指针变量是在栈空间分配的, 而它指向的常量字符串 "hello,world" 是在静态数据区分配的 答案为 D 3-4 答 :p 为一级指针, 指向整数 首先 p 指向整数 1,p++ 让 p 指向整数 2 当执行 free(p) 时, 由于 free 释放的不是分配的起始地址, 导致程序崩溃 3-5 答 : *p=*p1*(*p2)=1*3=3,p 指向 c 变量, 即 c=3 答案为 C 3-6 答 : 不能将常量作为地址值 答案为 B 3-7 答 :pk 指向 2,pm 指向 4 对于*(p=&n)=*pk*(*pm), 先执行 *pk*(*pm)=2*4=8, 再执行 p=&n, 使 p 指向 n, 即 *p=8, 间接使 n=8 程序输出为 答 : 程序的功能是同步顺序扫描字符数组 a 和 b, 输出对应位置相同的字符 程序的输出为 gae 3-9 答 : 指针 s1 指向常量字符串, 不能通过 s1 修改它, 所以 s1[2]='e' 和 *(s1+2)='e' 错误 答案为 C 3-10 答 : 在 int const *p=&i 中,const 修饰 *, 不能修改 p 指向的内容, 但 p 可以修改, 而执行 p++ 使 p 指向一个垃圾值 答案为 C 84

24 第 3 章内存操作 指针 3-11 答 : 一级指针 p 指向 3 个整数, 二级指针 pp 指向 p 对于表达式**(++pp), 先执行 ++pp 让 pp 指向 p 的下一个地址并返回它, 该地址不是有效数据的地址, 在执行 **pp 时出现取垃圾地址内容的情况, 导致程序崩溃 3-12 答 :p 为一级指针, 指向整数 q 为一级指针, 指向整数 pp 为二级指针, 其中 pp 指向 p,pp+1 指向 q 当执行*pp=q 时,pp 指向 q 在 printf 语句中先执行表达式 **(--pp) pp 自减 1 指向 p, 返回 **pp, 即 p[0]=1; 再执行表达式 *(*(pp+1)+1), 相当于 *(q+1) 返回 q[1], 即 6 程序的输出为 6,1 85

Microsoft PowerPoint - 5. 指针Pointers.ppt [兼容模式]

Microsoft PowerPoint - 5. 指针Pointers.ppt [兼容模式] 指针 Pointers 变量指针与指针变量 Pointer of a variable 变量与内存 (Variables and Memory) 当你声明一个变量时, 计算机将给该变量一个内存, 可以存储变量的值 当你使用变量时, 计算机将做两步操作 : - 根据变量名查找其对应的地址 ; - 通过地址对该地址的变量内容进行读 (retrieve) 或写 (set) 变量的地址称为变量的指针! C++

More information

没有幻灯片标题

没有幻灯片标题 指针作为函数参数 : 原因 : 1 需要修改一个或多个值,( 用 return 语句不能解决问题 ) 2 执行效率的角度 使用方法 : 在函数原型以及函数首部中需要声明能够接受指针值的形参, 具体的写法为 : 数据类型 * 形参名 如果有多个指针型形参, 则用逗号分隔, 例如 : void swap(int *p1, int *p2) 它说明了形参 p1 p2 是指向整型变量的指针 在函数调用时,

More information

《C语言程序设计》第2版教材习题参考答案

《C语言程序设计》第2版教材习题参考答案 教材 C 语言程序设计 ( 第 2 版 ) 清华大学出版社, 黄保和, 江弋编著 2011 年 10 月第二版 ISBN:978-7-302-26972-4 售价 :35 元 答案版本 本习题答案为 2012 年 2 月修订版本 一 选择题 1. 设已定义 int a, * p, 下列赋值表达式中正确的是 :C)p = &a A. *p = *a B. p = *a C.p = &a D. *p =

More information

《C语言程序设计》教材习题参考答案

《C语言程序设计》教材习题参考答案 教材名称 : C 语言程序设计 ( 第 1 版 ) 黄保和 江弋编著清华大学出版社 ISBN:978-7-302-13599-9, 红色封面 答案制作时间 :2011 年 2 月 -5 月 一 选择题 1. 设已定义 int a, * p, 下列赋值表达式中正确的是 :C)p=&a 2. 设已定义 int x,*p=&x;, 则下列表达式中错误的是 :B)&*x 3. 若已定义 int a=1,*b=&a;,

More information

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢   学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 Email: 51141201063@ecnu.cn 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Java 类型 引用 不可变类型 对象存储位置 作用域 OOP

More information

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP:  ******************* * 关于 Java 测试试题 ****** ******************* * 关于 Java 测试试题 ******************* 問 1 运行下面的程序, 选出一个正确的运行结果 public class Sample { public static void main(string[] args) { int[] test = { 1, 2, 3, 4, 5 ; for(int i = 1 ; i System.out.print(test[i]);

More information

c_cpp

c_cpp C C++ C C++ C++ (object oriented) C C++.cpp C C++ C C++ : for (int i=0;i

More information

Generated by Unregistered Batch DOC TO PDF Converter , please register! 浙江大学 C 程序设计及实验 试题卷 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:3

Generated by Unregistered Batch DOC TO PDF Converter , please register! 浙江大学 C 程序设计及实验 试题卷 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:3 浙江大学 C 程序设计及实验 试题卷 2002-2003 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:30-10:30 注意 : 答题内容必须写在答题卷上, 写在本试题卷上无效 一. 单项选择题 ( 每题 1 分, 共 10 分 ) 1. 下列运算符中, 优先级最低的是 A.

More information

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式]

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式] Arrays and Strings 存储同类型的多个元素 Store multi elements of the same type 数组 (array) 存储固定数目的同类型元素 如整型数组存储的是一组整数, 字符数组存储的是一组字符 数组的大小称为数组的尺度 (dimension). 定义格式 : type arrayname[dimension]; 如声明 4 个元素的整型数组 :intarr[4];

More information

chap07.key

chap07.key #include void two(); void three(); int main() printf("i'm in main.\n"); two(); return 0; void two() printf("i'm in two.\n"); three(); void three() printf("i'm in three.\n"); void, int 标识符逗号分隔,

More information

一 关于内存 数据存储 变量分类 局部变量 全局变量 静态变量 请看下面代码, 分析变量类型? int pi = 3; int Area(int r, int *sum) { int b; static int c =0; b = pi * r * r; c += b; *sum = c; retu

一 关于内存 数据存储 变量分类 局部变量 全局变量 静态变量 请看下面代码, 分析变量类型? int pi = 3; int Area(int r, int *sum) { int b; static int c =0; b = pi * r * r; c += b; *sum = c; retu 移动平台应用软件开发 C/C++/JAVA 基础 指针以及指针操作 主讲 : 张齐勋 zhangqx@ss.pku.edu.cn 移动平台应用软件开发 课程建设小组北京大学二零一五年 一 关于内存 数据存储 变量分类 局部变量 全局变量 静态变量 请看下面代码, 分析变量类型? int pi = 3; int Area(int r, int *sum) { int b; static int c =0;

More information

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,

More information

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

Microsoft Word - 《C语言开发入门》课程教学大纲-2.doc

Microsoft Word - 《C语言开发入门》课程教学大纲-2.doc C 语言开发入门 课程教学大纲 ( 课程英文名称 ) 课程编号 :201409210011 学分 :5 学分学时 :60 学时 ( 其中 : 讲课学时 :37 学时上机学时 :23 学时 ) 先修课程 : 计算机导论后续课程 :C++ 程序设计适用专业 : 信息及其计算机相关专业开课部门 : 计算机系 一 课程的性质与目标 C 语言开发入门 是计算机各专业必修的基础课程, 是数据结构 C++ Java

More information

第4章 栈和队列

第4章  栈和队列 期中考试成绩统计结果 ( 平均 :68) 第 9 讲指针与引用 (Part I) 周水庚 2017 年 11 月 23 日 提要 指针 指针和数组 提要 指针 指针和数组 指针与指针的作用 指针是 C 语言中用于表示程序对象地址的一类数据 指针的作用 间接引用它所指的对象 描述数据和数据之间的关系, 以便构造复杂的数据结构 利用各种类型指针形参, 能使函数增加活力 指针与数组结合, 使引用数组元素的形式更加多样

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d

More information

bingdian001.com

bingdian001.com 2016 14 1.5 21 1. 50% 20% 5% 10% A.2 B.10.5 C.10 D.2.1 A = 1/ - =50%20%/10%5%=2 2. 2015 1 1.2 1.5 2016 1.9 2015 A.50% B.90% C.75% D.60% A = / = =1.2 1.5=1.8 2016 =1.9-1 /1=0.9 =0.9/1.8=50% 3. A. B. C.

More information

网C试题(08上).doc

网C试题(08上).doc 学习中心 姓名 学号 西安电子科技大学网络与继续教育学院 高级语言程序设计 (C) 全真试题 ( 闭卷 90 分钟 ) 题号一二三总分 题分 60 20 20 得分 一 单项选择题 ( 每小题 3 分, 共 60 分 ) 1.C 语言程序的基本单位是 A) 程序行 B) 语句 C) 函数 D) 字符 2. 下列四组选项中, 均是不合法的用户标识符的选项是 A)A B)getc C)include D)while

More information

2015年计算机二级(C语言)模拟试题及答案(三)

2015年计算机二级(C语言)模拟试题及答案(三) 2016 年计算机二级 (C 语言 ) 模拟试题及答案 (3) 1.( A ) 是构成 C 语言程序的基本单位 A 函数 B 过程 C 子程序 D 子例程 2.C 语言程序从 ( C ) 开始执行 A 程序中第一条可执行语句 B 程序中第一个函数 C 程序中的 main 函数 D 包含文件中的第一个函数 3 以下说法中正确的是( C ) A C 语言程序总是从第一个定义的函数开始执行 B 在 C 语言程序中,

More information

数 学 高 分 的 展 望 一 管 理 类 联 考 分 析 第 一 篇 大 纲 解 析 篇 编 写 : 孙 华 明 1 综 合 能 力 考 试 时 间 :014 年 1 月 4 日 上 午 8:30~11:30 分 值 分 配 : 数 学 :75 分 逻 辑 :60 分 作 文 :65 分 ; 总

数 学 高 分 的 展 望 一 管 理 类 联 考 分 析 第 一 篇 大 纲 解 析 篇 编 写 : 孙 华 明 1 综 合 能 力 考 试 时 间 :014 年 1 月 4 日 上 午 8:30~11:30 分 值 分 配 : 数 学 :75 分 逻 辑 :60 分 作 文 :65 分 ; 总 目 录 数 学 高 分 的 展 望... 1 第 一 篇 大 纲 解 析 篇... 1 一 管 理 类 联 考 分 析... 1 二 最 新 大 纲 解 析... 1 三 考 前 复 习 资 料 及 方 法... 第 二 篇 总 结 篇... 4 1 应 用 题 考 点 总 结 与 技 巧 归 纳... 4 代 数 模 块 题 型 归 纳 及 考 点 总 结... 9 3 数 列 模 块 题 型 归

More information

Chapter12 Derived Classes

Chapter12   Derived Classes 继 承 -- 派 生 类 复 习 1. 有 下 面 类 的 说 明, 有 错 误 的 语 句 是 : class X { A) const int a; B) X(); C) X(int val) {a=2 D) ~X(); 答 案 :C 不 正 确, 应 改 成 X(int val) : a(2) { 2. 下 列 静 态 数 据 成 员 的 特 性 中, 错 误 的 是 A) 说 明 静 态 数

More information

Ps22Pdf

Ps22Pdf ) ,,, :,,,,,,, ( CIP) /. :, 2001. 9 ISBN 7-5624-2368-7.......... TU311 CIP ( 2001) 061075 ( ) : : : : * : : 174 ( A ) : 400030 : ( 023) 65102378 65105781 : ( 023) 65103686 65105565 : http: / / www. cqup.

More information

Microsoft PowerPoint - C语言课件-9-结构体.pptx

Microsoft PowerPoint - C语言课件-9-结构体.pptx 第九章结构体 郎大鹏 第九章结构体 9.1 结构体类型的声明方法 9.2 结构体类型变量的定义与使用 9.3 结构体数组 9.4 编程举例 9.5 习题 9.1 结构体类型的声明方法 结构体声明的语法形式如下 : struct 结构体标识符 成员变量列表 ; }; 例如, 为了描述班级 ( 假设仅仅包括班级编号 专业 人数等信息 ), 可以声明如下的结构体类型 struct Class char Code[10];

More information

C/C++ - 函数

C/C++ - 函数 C/C++ Table of contents 1. 2. 3. & 4. 5. 1 2 3 # include # define SIZE 50 int main ( void ) { float list [ SIZE ]; readlist (list, SIZE ); sort (list, SIZE ); average (list, SIZE ); bargragh

More information

OOP with Java 通知 : Project 2 提交时间 : 3 月 15 日晚 9 点

OOP with Java 通知 : Project 2 提交时间 : 3 月 15 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 : Project 2 提交时间 : 3 月 15 日晚 9 点 复习 : Java 类型 基本类型 boolean, char, 封装 (wrappers) 类 (class) 定义 class MyType { int i; double d; 数据 (Fields) char c; void set(double

More information

OOP with Java 通知 Project 2 提交时间 : 3 月 21 日晚 9 点 作业提交格式 学习使用 文本编辑器 cmd, PowerShell (Windows), terminal(linux, Mac)

OOP with Java 通知 Project 2 提交时间 : 3 月 21 日晚 9 点 作业提交格式 学习使用 文本编辑器 cmd, PowerShell (Windows), terminal(linux, Mac) OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 2 提交时间 : 3 月 21 日晚 9 点 作业提交格式 学习使用 文本编辑器 cmd, PowerShell (Windows), terminal(linux, Mac) 复习 面向对象编程 将实际问题分解成不同的对象 不的对象提供不同的服务 对象之间可以传递消息 例子小李深夜

More information

OOP with Java 通知 : Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢

OOP with Java 通知 : Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 : Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 Email: 51141201063@ecnu.cn 复习 : Java 类型 基本类型 boolean, char, 封装 (wrappers) 类 (class) 定义 class MyType { int i;

More information

c语言面试题总结.doc

c语言面试题总结.doc 参考 : C/C++ 程序员面试指南 杨国祥等编著电子工业出版社 编程规范 1 头文件内有时会定义一些类, 结构体等, 如果被包含多次, 将会出现类型重定义的错误, 所以通常使用预处理指令来解决这个问题 #ifndef 标识 #define 标识. #endif 标识在理论上是可以自由命名的, 但每个头文件的这个标识都应该是唯一的, 标识的命名的规则一般是头文件名全大写, 前后加下划线, 并把头文件中的.

More information

FY.DOC

FY.DOC 高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主

More information

C++ 程式設計

C++ 程式設計 C C 料, 數, - 列 串 理 列 main 數串列 什 pointer) 數, 數, 數 數 省 不 不, 數 (1) 數, 不 數 * 料 * 數 int *int_ptr; char *ch_ptr; float *float_ptr; double *double_ptr; 數 (2) int i=3; int *ptr; ptr=&i; 1000 1012 ptr 數, 數 1004

More information

山东2014第四季新教材《会计基础》冲刺卷第二套

山东2014第四季新教材《会计基础》冲刺卷第二套 2016 年 会 计 从 业 考 试 会 计 基 础 冲 刺 卷 2 一 单 项 选 择 题 ( 本 题 共 20 小 题, 每 小 题 1 分, 共 20 分 在 下 列 每 小 题 的 备 选 项 中, 有 且 只 有 一 个 选 项 是 最 符 合 题 目 要 求 的, 请 将 正 确 答 案 前 的 英 文 字 母 填 入 题 后 的 括 号 内, 不 选 错 选 均 不 得 分 ) 1.

More information

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf ("%d", & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf ("%d %d

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf (%d, & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf (%d %d 2013 18 ( ) 1. C pa.c, pb.c, 2. C++ pa.cpp, pb.cpp, Compilation Error cin scanf Time Limit Exceeded 1: A 5 B 5 C 5 D 5 E 5 F 5 1 2013 C 1 # include 2 int main ( void ) 3 { 4 int cases, a, b,

More information

untitled

untitled A, 3+A printf( ABCDEF ) 3+ printf( ABCDEF ) 2.1 C++ main main main) * ( ) ( ) [ ].* ->* ()[] [][] ** *& char (f)(int); ( ) (f) (f) f (int) f int char f char f(int) (f) char (*f)(int); (*f) (int) (

More information

untitled

untitled 3 C++ 3.1 3.2 3.3 3.4 new delete 3.5 this 3.6 3.7 3.1 3.1 class struct union struct union C class C++ C++ 3.1 3.1 #include struct STRING { typedef char *CHARPTR; // CHARPTR s; // int strlen(

More information

《计算概论》课程 第十九讲 C 程序设计语言应用

《计算概论》课程 第十九讲  C 程序设计语言应用 计算概论 A 程序设计部分 字符数组与字符串 李戈 北京大学信息科学技术学院软件研究所 lige@sei.pku.edu.cn 字符数组的定义 #include int main() char a[10] = 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j' ; for (int i = 0; i < 10; i++) cout

More information

( CIP).:,3.7 ISBN TB CIP (3) ( ) ISBN O78 : 3.

( CIP).:,3.7 ISBN TB CIP (3) ( ) ISBN O78 : 3. ( CIP).:,3.7 ISBN 7 568 383 3.......... TB CIP (3) 334 3 37 ( ) 64536 www.hdlgpress.com.c 7879 6 9.75 479 3 7 3 7 45 ISBN 7 568 383 3O78 : 3. 995,.,.,.,. :,,,,.. :,,,,,,.,,,,.,,. ,,.,,,.,,,.,,,,.,.,,,

More information

:,,,, ( CIP ) /,. :, ISBN CIP ( 2001) : : 127, : : : ht t p: / / www. nwpup. com : :

:,,,, ( CIP ) /,. :, ISBN CIP ( 2001) : : 127, : : : ht t p: / / www. nwpup. com : : :,,,, ( CIP ) /,. :, 2001. 8 ISBN 7 5612 1363 8............. 0342 CIP ( 2001) 027392 : : 127, : 710072 : 029-8493844 : ht t p: / / www. nwpup. com : : 787mm1 092mm : 19. 75 : 480 : 2001 8 1 2001 8 1 :

More information

untitled

untitled 不 料 料 例 : ( 料 ) 串 度 8 年 數 串 度 4 串 度 數 數 9- ( ) 利 數 struct { ; ; 數 struct 數 ; 9-2 數 利 數 C struct 數 ; C++ 數 ; struct 省略 9-3 例 ( 料 例 ) struct people{ char name[]; int age; char address[4]; char phone[]; int

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 The BitCoin Scripting Language 交易实例 交易结构 "result": { "txid": "921a dd24", "hash": "921a dd24", "version": 1, "size": 226, "locktime": 0, "vin": [ ], "vout": [ ], "blockhash": "0000000000000000002c510d

More information

技能竞赛C试题

技能竞赛C试题 C 语言程序设计单元测验四 ( 数组 ) 一 单项选择题 ( 每题 1 分, 共 60 分 ) 1 若有以下说明语句 : int a[12]={1,2,3,4,5,6,7,8,9,10,11,12; char c= a,d,g; 则数值为 4 的表达式是 :( ) A a[g-c] B a[4] C a[ d - c ] D a[ d -c] 2 假设 int 型变量占两个字节的存储单元, 若有定义

More information

新版 明解C言語入門編

新版 明解C言語入門編 328, 4, 110, 189, 103, 11... 318. 274 6 ; 10 ; 5? 48 & & 228! 61!= 42 ^= 66 _ 82 /= 66 /* 3 / 19 ~ 164 OR 53 OR 164 = 66 ( ) 115 ( ) 31 ^ OR 164 [] 89, 241 [] 324 + + 4, 19, 241 + + 22 ++ 67 ++ 73 += 66

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,

More information

B4C2

B4C2 - ( )( ) B=A A A k A A A k (B)=(A )+(A )+ +(A k ) (B) B A A A k B (Patitios) Ex. 6 4 As. ()(A )=(U) (A) ()(A B )=((A B) )=(U) (A B) (DeMoga). (A-B)=(A) (A B) Ex. A={x x N x 0 6 } B={x x=0k k Z} (A B)=

More information

C/C++ - 文件IO

C/C++ - 文件IO C/C++ IO Table of contents 1. 2. 3. 4. 1 C ASCII ASCII ASCII 2 10000 00100111 00010000 31H, 30H, 30H, 30H, 30H 1, 0, 0, 0, 0 ASCII 3 4 5 UNIX ANSI C 5 FILE FILE 6 stdio.h typedef struct { int level ;

More information

新・明解C言語入門編『索引』

新・明解C言語入門編『索引』 !... 75!=... 48 "... 234 " "... 9, 84, 240 #define... 118, 213 #include... 148 %... 23 %... 23, 24 %%... 23 %d... 4 %f... 29 %ld... 177 %lf... 31 %lu... 177 %o... 196 %p... 262 %s... 242, 244 %u... 177

More information

C/C++语言 - C/C++数据

C/C++语言 - C/C++数据 C/C++ C/C++ Table of contents 1. 2. 3. 4. char 5. 1 C = 5 (F 32). 9 F C 2 1 // fal2cel. c: Convert Fah temperature to Cel temperature 2 # include < stdio.h> 3 int main ( void ) 4 { 5 float fah, cel ;

More information

C C

C C C C 2017 3 8 1. 2. 3. 4. char 5. 2/101 C 1. 3/101 C C = 5 (F 32). 9 F C 4/101 C 1 // fal2cel.c: Convert Fah temperature to Cel temperature 2 #include 3 int main(void) 4 { 5 float fah, cel; 6 printf("please

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 第 12 章再谈指针 本章的基本内容是 : 指针与数组 指针与结构体 动态存储分配 由于指针可以直接对内存进行操作, 所以指针的功能非常 强大 正确灵活地使用指针可以有效地表示复杂的数据结 构, 并可动态分配内存空间, 提高程序的运行效率 任务 12.1 判断回文 问题 输入一个字符串, 判断该字符串是否为回文 ( 首尾对称的字句, 例如 abcba abba 均为回文 ) 要求用指针实现 想法 设两个指针变量

More information

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++;

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++; Memory & Pointer trio@seu.edu.cn 2.1 2.1.1 1 int *p int a 0x00C7 0x00C7 0x00C7 2.1.2 2 int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++; 2.1.3 1. 2. 3. 3 int A,

More information

( ) Wuhan University

( ) Wuhan University Email: huangzh@whueducn, 47 Wuhan Univesity i L A TEX,, : http://affwhueducn/huangzh/ 8 4 49 7 ii : : 4 ; 8 a b c ; a b c 4 4 8 a b c b c a ; c a b x y x + y y x + y x x + y x y 4 + + 8 8 4 4 + 8 + 6 4

More information

第六章 数据分析(排列组合、概率和数据描述)

第六章 数据分析(排列组合、概率和数据描述) 考 纲. 排 列 组 合 第 六 章 数 据 分 析 ( 排 列 组 合 概 率 和 数 据 描 述 ) () 加 法 原 理 乘 法 原 理 () 排 列 与 排 列 数 () 组 合 与 组 合 数. 概 率 () 事 件 及 其 简 单 运 算 () 加 法 公 式 () 乘 法 公 式 () 古 典 概 型 () 贝 努 里 概 型. 数 据 描 述 一 排 列 组 合 ㈠ 知 识 要 点

More information

C 1

C 1 C homepage: xpzhangme 2018 5 30 C 1 C min(x, y) double C // min c # include # include double min ( double x, double y); int main ( int argc, char * argv []) { double x, y; if( argc!=

More information

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc 2 5 8 11 0 13 1. 13 2. 15 3. 18 1 23 1. 23 2. 26 3. 28 2 36 1. 36 2. 39 3. 42 4. 44 5. 49 6. 51 3 57 1. 57 2. 60 3. 64 4. 66 5. 70 6. 75 7. 83 8. 85 9. 88 10. 98 11. 103 12. 108 13. 112 4 115 1. 115 2.

More information

Microsoft PowerPoint - 8. 运算符重载 Operator Overloading.pptx

Microsoft PowerPoint - 8. 运算符重载 Operator Overloading.pptx 运算符重载 Operator Overloading class Point { public: ; double x_, y_; Why Operator Overloading? Point (double x =0, double y = 0):x_(x),y_(y) { int main(){ Point a(1., 2), b(3,4); Point c = a + b; return 0;

More information

新・解きながら学ぶC言語

新・解きながら学ぶC言語 330!... 67!=... 42 "... 215 " "... 6, 77, 222 #define... 114, 194 #include... 145 %... 21 %... 21 %%... 21 %f... 26 %ld... 162 %lf... 26 %lu... 162 %o... 180 %p... 248 %s... 223, 224 %u... 162 %x... 180

More information

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit 6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C51 6.1 C51 6.1.1 C51 C51 ANSI C MCS-51 C51 ANSI C C51 6.1 6.1 C51 bit Byte bit sbit 1 0 1 unsigned char 8 1 0 255 Signed char 8 11 128

More information

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d =

More information

untitled

untitled CHAPTER 02 2 CHAPTER 2-1 2-4 2-2 2-5 2-3 2-6 2-1 2-1-1 2-2 02 int A[3] = {10, 20, 30; A[0] 10 A[1] 20 A[2] 30 int *pa[3], A[3]; C 3 pa pa[0]pa[1]pa[2] 3 A A[0]A[1]A[2] 3 A A[0] A + i A[i] A + i &A[i]*(A

More information

C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1 1 TEMPLATE 1 Template 描述 使用模板函数求最大值 使用如下 main 函数对程序进行测试 int main() { double a, b; cin >> a >> b; cout c >> d; cout

More information

M ( ) K F ( ) A M ( ) 1815 (probable error) F W ( ) J ( ) n! M ( ) T ( ) L ( ) T (171

M ( ) K F ( ) A M ( ) 1815 (probable error) F W ( ) J ( ) n! M ( ) T ( ) L ( ) T (171 1 [ ]H L E B ( ) statistics state G (150l--1576) G (1564 1642) 16 17 ( ) C B (1623 1662) P (1601--16S5) O W (1646 1716) (1654 1705) (1667--1748) (1687--H59) (1700 1782) J (1620 1674) W (1623 1687) E (1656

More information

99 cjt h 7. 0 (8 ) 0 () abc a b c abc0 aaa 0 a () bca abc0 aa0 a0 0 a0 abc a789 a b c (8 ) 9!

99 cjt h 7. 0 (8 ) 0 () abc a b c abc0 aaa 0 a () bca abc0 aa0 a0 0 a0 abc a789 a b c (8 ) 9! 99 cjt h. 4 (79 ) 4 88 88. 0 0 7 7 7 ( ) (80 ). ( ) (8 ) 4! ( ) 0 4 0 4. n (x)(x) (x) n x an bn cnd abcd (8 ) () adbc () acbd () ac (4) db0 () abcd (x)(x) (x) n n ( x)[ ( x) ] ( x) ( x) ( x) x) ( x) n

More information

C

C C 2017 3 14 1. 2. 3. 4. 2/95 C 1. 3/95 C I 1 // talkback.c: 2 #include 3 #include 4 #define DENSITY 62.4 5 int main(void) 6 { 7 float weight, volume; 8 int size; 9 unsigned long letters;

More information

NOWOER.OM m/n m/=n m/n m%=n m%n m%=n m%n m/=n 4. enum string x1, x2, x3=10, x4, x5, x; 函数外部问 x 等于什么? 随机值 5. unsigned char *p1; unsigned long *p

NOWOER.OM m/n m/=n m/n m%=n m%n m%=n m%n m/=n 4. enum string x1, x2, x3=10, x4, x5, x; 函数外部问 x 等于什么? 随机值 5. unsigned char *p1; unsigned long *p NOWOER.OM /++ 程师能 评估. 单项选择题 1. 下 描述正确的是 int *p1 = new int[10]; int *p2 = new int[10](); p1 和 p2 申请的空间 的值都是随机值 p1 和 p2 申请的空间 的值都已经初始化 p1 申请的空间 的值是随机值,p2 申请的空间 的值已经初始化 p1 申请的空间 的值已经初始化,p2 申请的空间 的值是随机值 2.

More information

C/C++程序设计 - 字符串与格式化输入/输出

C/C++程序设计 - 字符串与格式化输入/输出 C/C++ / Table of contents 1. 2. 3. 4. 1 i # include # include // density of human body : 1. 04 e3 kg / m ^3 # define DENSITY 1. 04 e3 int main ( void ) { float weight, volume ; int

More information

九下新学期寄语.indd

九下新学期寄语.indd 义 务 教 育 教 科 书 数 学 九 年 级 下 册 QINGDAOCHUBANSHE 亲 爱 的 同 学 : 时 间 过 得 真 快! 转 眼 之 间, 已 经 进 入 九 年 级 下 学 期 在 九 年 义 务 教 育 阶 段 的 最 后 一 学 期, 你 打 算 怎 样 学 习 数 学? 函 数 是 你 的 老 朋 友, 早 在 七 年 级, 就 结 识 了 函 数, 在 八 ( 下 ) 又

More information

Static Enforcement of Security with Types

Static Enforcement of Security with Types 例题 1 一个 C 语言程序及其在 X86/Linux 操作系统上的编译结 果如下 根据所生成的汇编程序来解释程序中四个变 量的存储分配 生存期 作用域和置初值方式等方面 的区别 static long aa = 10; short bb = 20; func( ) { } static long cc = 30; short dd = 40; static long aa = 10; func(

More information

试卷代号 :1075 座位号 rn 国家开放大学 ( 中央广播电视大学 )2015 年秋季学期 " 开放本科 " 期末考试 c+ 十语言程序设计试题 2016 年 1 月 t 问一 Urr-f 斗 士 1 1. 下面的保留字 ( ) 不能作为函数的返回类型 A. void B. int C. new

试卷代号 :1075 座位号 rn 国家开放大学 ( 中央广播电视大学 )2015 年秋季学期  开放本科  期末考试 c+ 十语言程序设计试题 2016 年 1 月 t 问一 Urr-f 斗 士 1 1. 下面的保留字 ( ) 不能作为函数的返回类型 A. void B. int C. new 试卷代号 :1075 座位号 rn 国家开放大学 ( 中央广播电视大学 )2015 年秋季学期 " 开放本科 " 期末考试 c+ 十语言程序设计试题 2016 年 1 月 t 问一 Urr-f 斗 士 1 1. 下面的保留字 ( ) 不能作为函数的返回类型 A. void B. int C. new D. long 2. 在每个 C 十 + 程序中都必须包含有这样一个函数, 该函数的函数名为 ) A.main

More information

立 志 于 打 造 最 贴 近 考 生 实 际 的 辅 导 书 计 算 机 考 研 之 数 据 结 构 高 分 笔 记 率 辉 编 著 周 伟 张 浩 审 核 讨 论 群 :15945769

立 志 于 打 造 最 贴 近 考 生 实 际 的 辅 导 书 计 算 机 考 研 之 数 据 结 构 高 分 笔 记 率 辉 编 著 周 伟 张 浩 审 核 讨 论 群 :15945769 立 志 于 打 造 最 贴 近 考 生 实 际 的 辅 导 书 计 算 机 考 研 之 数 据 结 构 高 分 笔 记 率 辉 编 著 周 伟 张 浩 审 核 讨 论 群 :15945769 前 言 在 计 算 机 统 考 的 四 门 专 业 课 中, 最 难 拿 高 分 的 就 是 数 据 结 构 但 是 这 门 课 本 身 的 难 度 并 不 是 考 生 最 大 的 障 碍, 真 正 的 障 碍

More information

C/C++语言 - 运算符、表达式和语句

C/C++语言 - 运算符、表达式和语句 C/C++ Table of contents 1. 2. 3. 4. C C++ 5. 6. 7. 1 i // shoe1.c: # include # define ADJUST 7. 64 # define SCALE 0. 325 int main ( void ) { double shoe, foot ; shoe = 9. 0; foot = SCALE * shoe

More information

第一章 §1 1

第一章 §1 1 期 中 综 合 测 试 题 本 卷 分 为 第 Ⅰ 卷 ( 选 择 题 ) 和 第 Ⅱ 卷 ( 非 选 择 题 ), 满 分 100 分, 时 间 90 分 钟 第 Ⅰ 卷 ( 选 择 题 共 48 分 ) 一 选 择 题 ( 在 每 题 给 出 的 四 个 选 项 中, 只 有 一 项 是 最 符 合 题 意 的 本 大 题 共 24 小 题, 每 小 题 2 分, 共 48 分 ) 1. 阅 读

More information

2001年(下)局域网技术与组网工程试卷答案

2001年(下)局域网技术与组网工程试卷答案 二 一年上半年全国高等教育自学考试计算机基础与程序设计试卷 一 单项选择题 ( 本大题共 20 小题, 每小题 1 分, 共 20 分 ) 在每小题列出的四个选项中只有一个选项是符合题目要求的, 请将正确选项前的字母填在题后的括号内 1.I/O 设备指的是计算机的 ( ) A 存储设备 B 输入和输出设备 C 控制器 D 运算器 2. 具有只读功能的内存储器是指 ( ) A ROM B RAM C

More information

试卷代号 :1253 座位号 E 口 国家开放大学 ( 中央广播电视大学 )2014 年秋季学期 " 开放本科 " 期末考试 C 语言程序设计 A 试题 2015 年 1 月 E 四! 五 总分! 一 单选题 ( 每小题 2 分, 共 20 分 ) 1. 由 C 语言源程序文件编译而成的目标文件的默

试卷代号 :1253 座位号 E 口 国家开放大学 ( 中央广播电视大学 )2014 年秋季学期  开放本科  期末考试 C 语言程序设计 A 试题 2015 年 1 月 E 四! 五 总分! 一 单选题 ( 每小题 2 分, 共 20 分 ) 1. 由 C 语言源程序文件编译而成的目标文件的默 试卷代号 :1253 座位号 E 口 国家开放大学 ( 中央广播电视大学 )2014 年秋季学期 " 开放本科 " 期末考试 C 语言程序设计 A 试题 2015 年 1 月 E 四! 五 总分! 一 单选题 ( 每小题 2 分, 共 20 分 ) 1. 由 C 语言源程序文件编译而成的目标文件的默认扩展名为 ( ) A. cpp B. c C. exe D. obj 2. 设 x 和 y 均为逻辑值,

More information

技能竞赛C试题

技能竞赛C试题 C 语言程序设计单元测验六 ( 指针 ) 一 单项选择题 ( 每题 1 分, 共 54 分 ) 1 有以下程序 void fun(char *a, char *b) { a=b; (*a)++; { char c1='a',c2='a',*p1,*p2; p1=&c1; p2=&c2; fun(p1,p2); printf("%c%c\n",c1,c2); A Ab B aa C Aa D Bb 2

More information

Ps22Pdf

Ps22Pdf CIP ) / :,2006.2 ISBN 7-80702 - 113-6..........G.206 CIP (2006)080133 :8501168mm 1/ 32 : 120 :2000 2006 3 1 : 5000 ISBN 7-80702 - 113-6/ G206 : 348.00 (16 ) ,?, :,,,,,,,,,!,?,,,,,,?,, ,,,,,,,,,,,,,,,!,!,!

More information

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File 51 C 51 51 C C C C C C * 2003-3-30 pnzwzw@163.com C C C C KEIL uvision2 MCS51 PLM C VC++ 51 KEIL51 KEIL51 KEIL51 KEIL 2K DEMO C KEIL KEIL51 P 1 1 1 1-1 - 1 Project New Project 1 2 Windows 1 3 N C test

More information

《C语言程序设计》教材习题参考答案

《C语言程序设计》教材习题参考答案 教材名称 : C 语言程序设计 ( 第 1 版 ) 黄保和 江弋编著清华大学出版社 ISBN: 978-7-302-13599-9, 红色封面答案制作时间 :2011 年 2 月 -5 月一 选择题 1. 以下数组定义中, 错误的是 :C)int a[3]=1,2,3,4; 2. 以下数组定义中, 正确的是 :B) int a[][2]=1,2,3,4; 3. 设有定义 int a[8][10];,

More information

高二立體幾何

高二立體幾何 008 / 009 學 年 教 學 設 計 獎 勵 計 劃 高 二 立 體 幾 何 參 選 編 號 :C00 學 科 名 稱 : 適 用 程 度 : 高 二 簡 介 一 本 教 學 設 計 的 目 的 高 中 立 體 幾 何 的 學 習 是 學 生 較 難 理 解 而 又 非 常 重 要 的 一 個 部 分, 也 是 高 中 教 學 中 較 難 講 授 的 一 個 部 分. 像 國 內 的 聯 校

More information

试卷代号 ~1075 座位号 E 口 国家开放大学 ( 中央广播电视大学 )20]5 年秋季学期 " 开放本科 " 期末考试 C 十十语言程序设计 试题 同二二十斗 2016 年 1 月 巴叫一 1. 下面的保留字 ( ) 不能作为函数的返回类型 A. void B. int C. new D. l

试卷代号 ~1075 座位号 E 口 国家开放大学 ( 中央广播电视大学 )20]5 年秋季学期  开放本科  期末考试 C 十十语言程序设计 试题 同二二十斗 2016 年 1 月 巴叫一 1. 下面的保留字 ( ) 不能作为函数的返回类型 A. void B. int C. new D. l 试卷代号 ~1075 座位号 E 口 国家开放大学 ( 中央广播电视大学 )20]5 年秋季学期 " 开放本科 " 期末考试 C 十十语言程序设计 试题 同二二十斗 2016 年 1 月 巴叫一 1. 下面的保留字 ( ) 不能作为函数的返回类型 A. void B. int C. new D. long 2. 在每个 c++ 程序中都必须包含有这样一个函数, 该函数的函数名为 ( ) A. main

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 第六讲 指针与字符串 为什么指针 持久动态内存分配 字符串 ( 字符数组 ) 指针 什么是指针 指针的定义与运算 指针与一维 ( 二维 ) 数组 指针数组 指针与引用 指针与函数 2 指针定义 什么是指针 指针变量, 简称指针, 用来存放其它变量的内存地址 指针的定义 类型标识符 * 指针变量名 声明一个指针类型的变量, 星号后面可以留空格 类型标识符表示该指针所指向的对象的数据类型, 即该指针所代表的内存单元所能存放的数据的类型

More information

nooog

nooog C : : : , C C,,, C, C,, C ( ), ( ) C,,, ;,, ; C,,, ;, ;, ;, ;,,,, ;,,, ; : 1 9, 2 3, 4, 5, 6 10 11, 7 8, 12 13,,,,, 2008 1 1 (1 ) 1.1 (1 ) 1.1.1 ( ) 1.1.2 ( ) 1.1.3 ( ) 1.1.4 ( ) 1.1.5 ( ) 1.2 ( ) 1.2.1

More information

标题

标题 (CIP) /,,. :,2013.9 ISBN978 7 5628 3622 3 Ⅰ.1 Ⅱ.1 2 3 Ⅲ.1 2 Ⅳ. 1021 44 CIP (2013) 178704 / / / / / : 130,200237 :(021)64250306( ) (021)64252174( ) :(021)64252707 :press.ecust.edu.cn / /787mm 1092mm 1/16

More information

目录

目录 ALTERA_CPLD... 3 11SY_03091... 3 12SY_03091...4....5 21 5 22...8 23..10 24..12 25..13..17 3 1EPM7128SLC.......17 3 2EPM7032SLC.......18 33HT46R47......19..20 41..20 42. 43..26..27 5151DEMO I/O...27 52A/D89C51...28

More information

2015年计算机二级(C语言)模拟试题及答案(四)

2015年计算机二级(C语言)模拟试题及答案(四) 2015 年计算机二级 (C 语言 ) 模拟试题及答案 (4) 一 填空题 1 C 语言中基本的数据类型有 : 2 C 语言中普通整型变量的类型说明符为, 在内存中占 字节, 有符号普通整型的数据范围是 3 整数-35 在机内的补码表示为 4 执行下列语句 int a=8;a+=a-=a*a; 后,a 的值是 5 有如下语句:charA[ ]={ I am a student }; 该字符串的长度是,A[3]=

More information

2013 C 1 #include <stdio.h> 2 int main(void) 3 { 4 int cases, i; 5 long long a, b; 6 scanf("%d", &cases); 7 for (i = 0; i < cases; i++) 8 { 9 scanf("%

2013 C 1 #include <stdio.h> 2 int main(void) 3 { 4 int cases, i; 5 long long a, b; 6 scanf(%d, &cases); 7 for (i = 0; i < cases; i++) 8 { 9 scanf(% 2013 ( 28 ) ( ) 1. C pa.c, pb.c, 2. C++ pa.cpp, pb.cpp Compilation Error long long cin scanf Time Limit Exceeded 1: A 10 B 1 C 1 D 5 E 5 F 1 G II 5 H 30 1 2013 C 1 #include 2 int main(void) 3

More information

Ps22Pdf

Ps22Pdf C ( CIP) C /. :, 2001. 7 21 ISBN 7-5624 -2355-5. C........ C. TP312 CIP ( 2001 ) 034496 C * * : 7871092 1 /16 : 14. 25 : 356 20017 1 20017 1 : 1 6 000 ISBN 7-5624-2355-5 / TP311 : 21. 00 C, C,,,, C,, (

More information

Microsoft PowerPoint - 0 C复习.ppt [兼容模式]

Microsoft PowerPoint - 0 C复习.ppt [兼容模式] C 复习 董洪伟 http://hwdong.com 1 程序 : 数据 + 处理 ( 运算 ) 数据 : 变量和常量 int i = 3; 初始化式 变量需要定义 : 类型变量名 ; 类型变量名 = 变量或常量 ; doule pi, r=3.45,area; char var= A ; 类型变量 1, 变量 2, 变量 3; 同时定义多个变量, 逗号隔开 2 运算 : 用运算符对数据进行处理 y

More information

第2章 递归与分治策略

第2章  递归与分治策略 : 1. 2. 3. Strassen 4. 5. 6. 7. 8. 9... 2 T(n) = n T(n/2) T(n/2) T(n/2) T(n/2) 3 T(n) = n n/2 n/2 n/2 n/2 T(n/4)T(n/4)T(n/4)T(n/4) T(n/4)T(n/4)T(n/4)T(n/4) T(n/4)T(n/4)T(n/4)T(n/4) T(n/4)T(n/4)T(n/4)T(n/4

More information

<4D F736F F D205A572D2D A1AAA1AAD4ACE7F42D43D3EFD1D4CAB5D1B5BDCCB3CC2E646F6378>

<4D F736F F D205A572D2D A1AAA1AAD4ACE7F42D43D3EFD1D4CAB5D1B5BDCCB3CC2E646F6378> 第 1 部分 Visual Studio 6.0 开发环境介绍 本书以 Visual C++ 6.0 作为 C 源程序的实践开发环境, 本章将首先介绍 Visual C++ 6.0 环境的基本操作, 包括 Visual C++ 6.0 的安装和启动,C 源程序的编辑 运行与调试 1.1 安装与启动 Visual C++ 6.0 MSDN Visual C++ 6.0 1.1 Microsoft Visual

More information

C/C++ - 数组与指针

C/C++ - 数组与指针 C/C++ Table of contents 1. 2. 3. 4. 5. 6. 7. 8. 1 float candy [ 365]; char code [12]; int states [50]; 2 int array [6] = {1, 2, 4, 6, 8, 10}; 3 // day_mon1.c: # include # define MONTHS 12 int

More information

4 (QN )? m O i? :i I? +a% 3 1'. U li g ffl o ffl E ffl "I H 21 H i q ffl s E$" ffl "1 e'5 o m 4 ).ffl?os- ou>'a?o 'co- Ing M'::l: " 5a!. l(j r?i?-i

4 (QN )? m O i? :i I? +a% 3 1'. U li g ffl o ffl E ffl I H 21 H i q ffl s E$ ffl 1 e'5 o m 4 ).ffl?os- ou>'a?o 'co- Ing M'::l:  5a!. l(j r?i?-i ( ) : I +% 3 1'. U "I 21 q $" '5 ). - ' 'c- I '::: " 5. (j -j (11 R kt. j.5 5()() q ' :: B : :}(, d, *. [I,. C/' -S) )-+ jq - 5 C 3;5 )p ' " ).. "- --- :C f " =h (L I C) " % )-5, = = ::I * ( -= ' "6 *

More information

Microsoft PowerPoint - 01_Introduction.ppt

Microsoft PowerPoint - 01_Introduction.ppt Hello, World C 程序设计语言 第 1 章章观其大略 孙志岗 sun@hit.edu.cn http://sunner.cn prf("hello,, world\n"); 超级无敌考考你 : 如何把 hello 和 world 分别打印在两行? 2004-12-19 A Tutorial Introduction 2 hello.c 打印华氏温度与摄氏温度对照表 计算公式 : C=(5/9)(

More information

CHAPTER VC#

CHAPTER VC# 1. 2. 3. 4. CHAPTER 2-1 2-2 2-3 2-4 VC# 2-5 2-6 2-7 2-8 Visual C# 2008 2-1 Visual C# 0~100 (-32768~+32767) 2 4 VC# (Overflow) 2-1 2-2 2-1 2-1.1 2-1 1 10 10!(1 10) 2-3 Visual C# 2008 10! 32767 short( )

More information

51 C 51 isp 10 C PCB C C C C KEIL

51 C 51 isp 10   C   PCB C C C C KEIL http://wwwispdowncom 51 C " + + " 51 AT89S51 In-System-Programming ISP 10 io 244 CPLD ATMEL PIC CPLD/FPGA ARM9 ISP http://wwwispdowncom/showoneproductasp?productid=15 51 C C C C C ispdown http://wwwispdowncom

More information

Microsoft Word - 2008年9月二级C真卷.doc

Microsoft Word - 2008年9月二级C真卷.doc 机 密 启 用 前 2008 年 9 月 全 国 计 算 机 等 级 考 试 二 级 笔 试 试 卷 C 语 言 程 序 设 计 24 注 意 事 项 一 考 生 应 严 格 遵 守 考 场 规 则, 得 到 监 考 人 员 指 令 后 方 可 作 答 二 考 生 拿 到 试 卷 后 应 首 先 将 自 己 的 姓 名 准 考 证 号 等 内 容 涂 写 在 答 题 卡 的 相 应 位 置 上 三

More information

幻灯片 1

幻灯片 1 第一课 C 与 C++ 互联网新技术在线教育领航者 1 内容概述 第一部分 : C++ 综述 1. C++ 历史背景 2. Why C++ 3. 推荐书籍第二部分 : C VS C++ 1. C 语法回顾 2. 例 :C 实现动态数组 3. C++ 的 vector 第三部分 :C++ 对 C 的扩展 ( 上 ) 1. 命名空间 2. 输入输出 3. 基本类型转换 4. 声明 列表初始化 5. 指针和引用

More information

穨資料題_中三_中五適用__慈禧太后的功過_林麗貞_20

穨資料題_中三_中五適用__慈禧太后的功過_林麗貞_20 ( )...P.1. - (1)-(8).. P.2-P.14 1. (1) (2) (3) (4) (5) (6) 2. (7) -- (8). - (1) (3) P.15-P.17 (1) (2) (3)....P.18-P.22..P.23 1 (1835-1908) 15 ( ) ( ) (1) 3 ( 1997 ) 50. 3 ( 1970 ) 182-183 2 1. 1. 1. 2.

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 计算概论 A 课程程序设计部分 C++ 语言基本成分 数据成分 李戈 北京大学信息科学技术学院软件研究所 lige@sei.pku.edu.cn 再谈, 我们的进度安排 我们的学习过程 感性理性函数指针等 数据成分运算成分控制成分数组字符串 结构化的程序递归 传统学习过程 数据类型与表达式 输入输出 关系运算 控制语句 函数数组指针结构体 作业练习 感性认识作业练习 ( 以抄程序为主 ) 正常作业练习

More information

3978 30866 4 3 43 [] 3 30 4. [] . . 98 .3 ( ) 06 99 85 84 94 06 3 0 3 9 3 0 4 9 4 88 4 05 5 09 5 8 5 96 6 9 6 97 6 05 7 7 03 7 07 8 07 8 06 8 8 9 9 95 9 0 05 0 06 30 0 .5 80 90 3 90 00 7 00 0 3

More information

C C C The Most Beautiful Language and Most Dangerous Language in the Programming World! C 2 C C C 4 C 40 30 10 Project 30 C Project 3 60 Project 40

C C C The Most Beautiful Language and Most Dangerous Language in the Programming World! C 2 C C C 4 C 40 30 10 Project 30 C Project 3 60 Project 40 C C trio@seu.edu.cn C C C C The Most Beautiful Language and Most Dangerous Language in the Programming World! C 2 C C C 4 C 40 30 10 Project 30 C Project 3 60 Project 40 Week3 C Week5 Week5 Memory & Pointer

More information