C语言程序设计(第3版)何钦铭 颜 晖 第8章 指针

合集下载

C语言程序设计(第三版)何钦铭-颜晖主编-知识点清单

C语言程序设计(第三版)何钦铭-颜晖主编-知识点清单

C语言知识点清单(杭电姚晔整理)第1章基本数据类型和表达式1.1 关键字和标识符标识符(p8)1.2 基本数据类型常用数据类型(p21,p122),字符型数据(p50,p123),原码反码补码(p120),实型数据的存储(p121)1.3 常量和变量常量和变量的定义(p21),整型字符型实型常量与变量(p123)1.4 输入和输出函数printf(p23),scanf(p27),字符型数据的输入和输出(scanf/printf/getchar/putchar/p51/p128),整型数的输入输出(scanf/printf格式控制p125),实型数的输入输出(scanf/printf格式控制p127) 1.5 常用库函数常用数学函数(p28)1.6 运算符和表达式算术运算(p22),赋值运算(p23),关系运算(p25),逻辑运算(p52),位运算(p140),长度运算符(p142),算术表达式(p131),赋值表达式(p133),关系表达式(p134),逻辑表达式(p136),条件表达式(p139),逗号表达式(p139),运算符的优先级与结合性(p142),复合语句(P33),自动类型转换(p130),强制类型转换(p130)第2章控制结构与语句2.1 结构化程序设计数据表达(p5),流程控制(p6),主要语法单位(p9),C语言的特点(p12)2.2 顺序结构顺序控制结构(p6)2.3 选择结构if-else语句(p26,p45),多分支else-if语句(p47,p60),switch语句(p57)2.3 循环结构for语句(p32),while语句(p69),do-while语句(p73),循环嵌套(p79),循环语句的选用(p82) 2.4 转向语句break语句(p59,p75),continue语句(p76)第3章函数3.1 函数的定义函数首部(p97),函数体(p98),函数原型声明(p100),问题分析思想(p105),模块化设计(p106/p239)3.2 函数的调用调用过程(p98),调用形式(p99),参数传递(p99),返回结果(p100,p104)3.3 嵌套与递归函数的嵌套调用(p238),递归函数基本概念(p241),递归程序设计(p244)3.4 函数与变量局部变量和全局变量(p108),变量生命周期(p112),变量存储的内存分布(p113),静态变量(p113),外部变量(p258),静态全局变量(p258),变量的存储类型及作用域(附录p340)第4章数组4.1 一维数组一维数组的定义和引用(p149),一维数组的初始化(p151),一维数组的编程(p152)4.2 二维数组二维数组的定义和引用(p160),二维数组的初始化(p161),二维数组的编程(p162)4.3 字符串字符数组(p167),字符串(p168),字符串处理函数(gets/puts/strcpy/strcat/strcmp/strlen/p203) 4.4 数组与函数数组名作为函数参数(p196),冒泡排序(p199),命令行参数(p273)第5章指针5.1 指针基本知识地址与指针(p181),指针变量的定义(p182),指针的基本运算(p184),指针变量的初始化(p186) 5.2 指针与数组指针、数组和地址的关系(p192)5.3 指针与字符串字符串与字符指针(p201),用指针数组操作多个字符串(p270)5.4 指针数组与多级指针指针数组的概念(p265),指向指针的指针(p266),二维数组的指针形式(p268),5.5 指针与函数指针作为函数参数(p188),指针实现动态内存分配(malloc/free/p209),指针作为函数返回值(p278),指向函数的指针(p278)第6章结构体6.1 结构体的概念结构的定义(p219),结构变量的定义和初始化(p221),结构变量的使用(p223)6.2 结构体数组结构数组操作(p226)6.3 结构体指针结构指针的概念(p229),结构指针做函数参数(p230)6.4 单向链表链表的概念(p285),单向链表的常用操作(p286)第7章文件7.1 文件概述文件的概念(p299),文本文件与二进制文件(p300),文件结构与文件类型指针(p301),文件处理步骤(p304)7.2 打开与关闭文件打开文件(p306),关闭文件(p308)7.3 文件读写函数字符方式读写函数fgetc/fputc(p309),字符串方式读写函数fgets/fputs(p311),格式化方式读写函数fscanf/fprintf(p314),数据块方式读写函数fread/fwrite(p315),文件定位函数rewind/fseek/ftell(p317),检测文件指针状态函数feof/ferror/clearerr(p317)第8章其他知识点8.1 编译预处理文件包含(p249),常用标准头文件(p251),宏基本定义(p247),带参数的宏定义(p248),条件编译(p252)8.2 共用体联合变量(附录p339)8.3 枚举枚举变量(附录p339)。

精品课件-C程序设计(第三版)(荣政)-第8章

精品课件-C程序设计(第三版)(荣政)-第8章

第八章 指针
指针类型是对所有类型的指针的总称,指针的类型是指 针所指对象的数据类型。例如,pc是指向字符变量的指针, 简称字符指针。字符指针是基本类型的指针之一,除各种基 本类型之外,允许说明指向数组的指针、指向函数的指针、 指向结构体和共用体的指针以及指向各类指针的指针。在C 语言中只有指针被允许用来存放地址的值,其它类型的变量 只能存放该类型的数据。(很多书中用指针一词来指地址值, 或用指针变量来代表指针,阅读中应注意其具体含义。)
例8.2中指向整型的指针point在定义之后直接使用了,这 两条语句在编译时不会出现语法错误,但在使用时却几乎肯定 会出问题。表面上看,scanf()函数的参数要求给出的是地址, 而point的值就代表的是地址,但是point的值究竟是多少,也 就是说point究竟指向哪里,我们无法得知,在这种情况下就 对point指向的单元进行输入操作,将冲掉point指向的单元的 原有内容,假如这个单元是操作系统的所在处,就破坏了操作 系统,显然是一件危险的事。
为了理解指针的概念,程序员要有关于计算机如何在存储 器中存储信息的基本知识。以下简单地介绍个人计算机中存储 器存储的情况。
第八章 指针
个人计算机中CPU可以直接访问的,用来存储程序和数据 的记忆部件称为内存储器,内存储器由成千上万个顺序存储单 元组成,每个单元由一个惟一的地址标识。给定计算机的存储 器地址范围为从0到所安装的存储器数量的最大值。在计算机 上运行的每一个程序都要使用存储器。例如,操作系统要占用 一些计算机存储空间,每个应用程序也要占用计算机存储空间。 按照面向过程的结构化程序设计方法,程序代码和程序要处理 的数据是分开存储的,所以,一个程序在内存中要占两部分空 间:数据部分和指令代码部分。
第八章 指针

《C语言程序设计教程》(第三版)课后习题参考答案(精选5篇)[修改版]

《C语言程序设计教程》(第三版)课后习题参考答案(精选5篇)[修改版]

第一篇:《C语言程序设计教程》(第三版)课后习题参考答案C语言程序设计课后习题参考答案习题一一、单项选择题1、C2、B3、B4、C5、D6、A7、C8、A二、填空题1、判断条件2、面向过程编程3、结构化4、程序5、面向对象方法6、基本功能操作、控制结构7、有穷性8、直到型循环结构9、算法10、可读性11、模块化12、对问题的分解和模块的划分习题二一、单项选择题1、B2、D3、C4、B5、A二、填空题1、主2、C编译系统3、结构化4、程序5、面向对象方法6、.OBJ7、库函数8、直到型循环结构习题三一、单项选择题1、D2、B3、A4、C9、B10、C11、A12、D13、C17、B18、C19、C20、D21、A25、D26、A二、填空题1、补码2、10^-138~10^1 38、15~166、A7、B6、D7、B14、B15、C22、D8、C8、D16、A24、D、A3、实4、单目运算符、自右向左5、函数调用6、65,89习题四一、单项选择题1、D2、C3、D4、A5、D6、B7、A8、C9、B10、B二、填空题1、两, ;2、5.1690003、-200 2500、i=-200,j=2500回车、i=-200回车j=2500回车4、a=98,b=765.000000,c=4321.0000005、100 25.81 1.89234、100,25.81,1.89234、100回车25.81回车1.89234回车6、0,0,37、38、scanf(“%lf %lf %lf”,&a,&b,&c);9、13 13.000000 13.00000010、c=b-a;a=b+c;习题五一、单项选择题1、B2、D3、C4、B5、B6、D7、A8、B二、填空题1、1 、02、k!=03、if(x>4||xelse printf(“error!”); 4、if(((x>=1&&x=200&&x Printf(“%d”,x);5、16、17、10! Right!8、a=09、2,110、0习题六一、单项选择题9、D1、B2、C3、C4、B5、C6、B7、C8、A二、填空题1、无穷次2、83、205、3.66、*#*#*#$7、828、d=1.0 、k++、k9、!(x习题七一、单项选择题1、B2、D3、C4、C5、A二、填空题1、1 2 4 8 16 32 64 128 256 5122、a[age]++、i=18;i3、break、i==84、a[i]>b[i]、i3、j5、b[j]=0、b[j]=a[j][k]习题八一、单项选择题1、B3、C4、A5、A9、D10、B11、A12、C13、A二、填空题1、return1、return n+sum(n-1)2、return1、n*facto(n-1)习题九一、单项选择题1、D2、C3、D4、A5、C9、B10、C11、A13、B17、C18、A19、B20、C二、填空题1、int 、return z2、*p++3、’\0’、++4、p、max*q6、A7、D6、A7、C14、C15、B6、C7、C14、A15、D8、A8、D8、C习题十一、单项选择题1、D2、D3、A4、5、B6、A7、C8、B9、D10、11、C12、D13、D14、C二、填空题1、34 122、ARRAY a[10],b[10],c[10];3、2 34、ab、cd5、(*b).day、b->day6、adghi mnohi no7、(struct node *)、!=’\n’、p=top;8、p1=p1->next9、(struct list *)、(struct list *)、return (n)习题十一一、单项选择题1、A2、A3、B4、A5、B9、A10、B11、B12、B13、C17、D二、填空题1、ASCII(文本)、二进制2、pf=fopen(“A:\zk04\data xfile.dat”,”w”);3、fputc()、fputs()、fscanf()、fread()4、(后两个空)文件结束符、非0值7、B14、C15、D8、A16、A第二篇:C语言程序设计教程课后习题参考答案《C语言程序设计教程》课后习题参考答案习题1 1. (1)编译、链接.exe (2)函数主函数(或main函数)(3)编辑编译链接2.(1)-(5):DDBBC (6)-(10):ABBBC 3.(1)答:C语言简洁、紧凑,使用方便、灵活;C语言是高级语言,同时具备了低级语言的特征;C 语言是结构化程序设计语言,具有结构化的程序控制语句;C语言有各种各样的数据类型;C语言可移植性好;生成目标代码质量高,程序执行效率高。

C语言程序设计(何钦铭_颜晖_主编)ppt课件

C语言程序设计(何钦铭_颜晖_主编)ppt课件

printf("%d, %x\n", 012, 012);
return 0;
}
0……01010
精选ppt课件2021
32
例6-2(2) 输入整型数据
# include <stdio.h> int main(void) {
int a, b;
input a, b: 17 17 15 17 f, 17
printf("input a, b:");
'\n' '\101' '\x41' 'A'
所有字符都可以用转义字符表示
精选ppt课件2021
26
6.2.2 变量
在程序运行过程中,其值可以被改变的量。
变量必须先定义,后使用 定义变量时要指定变量名和数据类型 变量应该先赋值,后引用
精选ppt课件2021
27
变量名:合法的标识符
变量的定义
整型、实型、字符型数据的存储
6.1.2 基本数据类型
整型、实型、字符型
精选ppt课件2021
4
6.1.1 数据的存储-整型数据
设整数在内存中用2个字节存储
1 000 0001 1000 0001 0 000 0001 1000 0001
符号位 1:负数 0:正数
精选ppt课件2021
5
数值的表示方法-原码 反码 补码
16或32位
short [int] unsigned short [int] 16位
long [int] unsigned long [int]
32位
有符号 short
1 000 0000 0000 0000 -32768 -215

C语言程序设计第3版何钦铭颜晖第8章指针

C语言程序设计第3版何钦铭颜晖第8章指针

C语言程序设计第3版何钦铭颜晖第8章指针指针作为C语言中的一种数据类型,它存储的是一个变量或者对象的地址。

通过指针,可以直接访问或者修改存储在该地址上的数据。

指针的概念对于理解C语言的内存管理和数据结构至关重要。

本章首先介绍了指针的概念和初始化方式。

指针的声明和初始化方法与变量的声明和初始化类似,但在变量名前需要加上“*”符号,表示该变量是一个指针变量。

指针变量需要与具体的数据类型相匹配,以便正确地访问和修改数据。

其次,本章详细讨论了指针和数组之间的关系。

在C语言中,数组名可以看作是数组首元素的地址,所以可以通过指针对数组进行遍历和操作。

通过指针,可以实现指向数组的指针运算,例如指针的自增操作可以实现数组的遍历。

本章还介绍了指针和函数之间的关系。

在C语言中,可以通过函数参数传递指针来实现对函数外部变量的修改。

这种通过指针传递参数的方法,被称为按引用传递。

通过指针,可以在函数内部直接修改指针所指向的数据,从而实现对外部变量的修改。

本章接着讨论了指针和字符串之间的关系。

在C语言中,字符串实际上是存储在内存中的字符数组。

通过指针变量,可以访问字符串的每一个字符,并可以对字符串进行各种操作。

指针和字符串的关系在C语言的字符串处理中是非常重要的。

最后,本章简要介绍了指针和结构体之间的关系。

结构体是C语言中一种自定义的数据类型,可以包含不同类型的数据。

通过指针变量,可以访问结构体的成员,并实现对结构体的操作。

总之,本章通过详细讨论指针的各种用法,使读者对指针有了深入的理解。

指针作为C语言中的重要概念,对于理解和掌握C语言编程非常重要。

本章通过丰富的例子和深入的讲解,使读者能够掌握指针的基本概念,以及各种指针的用法。

对于初学者来说,指针可能是一个比较难理解的概念,但通过学习本章内容,读者可以逐步掌握指针的基本操作,并能够熟练地运用指针解决实际问题。

《C语言程序设计(何钦铭 颜晖 主编)》习题8答案

《C语言程序设计(何钦铭 颜晖 主编)》习题8答案
#include<stdlib.h>
intmain(void)
{
inti,j,a,n,sum,average;
int*p;
printf("Enter n:");
scanf("%d",&n);
if((p=(int*)calloc(n,sizeof(int)))==NULL){
printf("Not able to allocate memory.\n");
else if(m==0)
printf("str1=str2\n");
else
printf("str1<str2\n");
return 0;
}
intstrcomp(char s1[80],char s2[80])
{
inta;
if(strcmp(s1,s2)>0)
a=1;
else if(strcmp(s1,s2)==0)
break;
}
}
void swap2(int*px,int*py)
{
intt;
t=*px;
*px=*py;
*py=t;
}
第五题
#include<stdio.h>
#include<string.h>
voidmcopy(char *s,intm);
intmain(void)
{
inti,m,l;
charstr[100];
}
第二题
#include<stdio.h>
intmain(void)
{
inta[10];

何钦铭-C语言程序设计(第3版)部分课后习题参考答案.docx

何钦铭-C语言程序设计(第3版)部分课后习题参考答案.docx

何钦铭《C语言程序设计》(第3版)课后习题参考答案习题11.对C 语言来说,下列标识符中哪些是合法的,哪些是不合法的?total, _debug, Large&Tall, Counter1, begin_解答:合法标识符:total, _debug, Counter1;不合法标识符:Large&Tall, begin_。

2.改写本章1.4 节中的流程图1.2,求1~100 中能被6 整除的所有整数的和。

解答:3.改写本章1.4 节中的程序,求1~100 中能被6 整除的所有整数的和,并在编程环境中验证该程序的运行结果。

解答:#include <stdio.h>int main(void){int i, sum = 0;for(i = 1; i <= 100; i++)if (i % 6 == 0)sum = sum + i;printf("%d", sum);return 0;}4.对于给定的整数n(n>1),请设计一个流程图判别n 是否为一个素数(只能被1 和自己整除的整数),并分析该流程图中哪些是顺序结构、哪些是分支结构与循环结构。

解答:在流程图中,分支结构和循环结构如图1.2 所示,自上而下的2 个实线框和2 个虚线组成了顺序结构。

习题21.求整数均值:输入4 个整数,计算并输出这些整数的和与平均值,其中平均值精确到小数点后1 位。

试编写相应程序。

解答:#include <stdio.h>int main (void){int num1, num2, num3, num4;double average, sum;scanf ("%d%d%d%d", & num1, & num2, & num3, & num4);sum = num1+ num2+ num3 + num4;average = sum / 4;printf ("Sum = %.0f; Average = %.1f\n", sum, average);return 0;}2.阶梯电价:为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量50 千瓦时(含50 千瓦时)以内的,电价为0.53 元/千瓦时;超过50 千瓦时的,超出部分的用电量,电价上调0.05 元/千瓦时。

C语言程序设计 第3版 第8章 函数

C语言程序设计 第3版 第8章 函数

s=a+b;
return s;
}
main()
//主函数
{
int s;
s=sum();
printf("s=%d\n",s);
}
运行结果
2 3↙ s=5
C语言程序设计
2.函数的定义
无返回值无参数 无返回值有参数
有返回值无参数 有返回值有参数
一般形式:
类型标识符 函数名(形式参数表列) {
函数体; return 表达式; }
调用方式
函数调用的一般形式:
函数名(实际参数表) 实际参数表中的参数可以是常数、变量或表达式,各实参之间用逗号分隔。
调用方式:
(1)函数表达式:函数作为表达式中的一项出现在表达式中,这种方式要求函数有返回值。 例如:s=sum(x,y);把sum的返回值赋予变量s。
(2)函数语句:函数调用的一般形式加上分号即构成函数语句,这种方式不要求函数有返回值。 例如:sum(x,y);以函数语句的方式调用函数。
void sum(int a,int b) //自定义函数
{
int s;
s=a+b;
ห้องสมุดไป่ตู้
printf("s=%d\n",s);
} main()
//主函数
{
int x=2,y=3;
sum(x,y);
}
运行结果
s=5
C语言程序设计
2.函数的定义
无返回值无参数 无返回值有参数
有返回值无参数 有返回值有参数
一般形式:
类型标识符 函数名( ) {
函数体; return 表达式; }
注意说明:
(1)函数的类型实际上是函数返回值的类型。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第8章指针【练习8-1】如果有定义”int m, n = 5, *p = &m;”与m = n等价的语句是 B 。

A.m = *p; B. *p = *&n; C. m = &n; D. m = **p;解答:A:p是指向m的指针变量,所以*p等价于m。

即m=m。

B:&n是n的地址,*&n是n的值,即把n的值赋给p指向的值m。

即m=n。

C:&n是n的地址。

即把n的地址赋给m。

D:**p是指p指向的指针所指向的值,在此无意义。

故选B。

【练习8-2】调用函数求两个数的和与差:计算输入的两个数的和与差,要求自定义一个函数sum_diff(float op1,float op2, float *psum, float *pdiff),其中op1和op2是输入的两个数,*psum 和*pdiff 是计算得出的和与差。

解答:#include<>void sum_diff(float op1,float op2,float *psum,float *pdiff);int main(void){float op1,op2,sum,diff;printf("Input op1 and op2: ");scanf("%f%f",&op1,&op2);sum_diff(op1,op2,&sum,&diff);printf("%f+%f=%f;%f-%f=%f \n",op1,op2,sum,op1,op2,diff);return 0;}void sum_diff(float op1,float op2,float *psum,float *pdiff){*psum=op1+op2;*pdiff=op1-op2;}【练习8-3】两个相同类型的指针变量能不能相加为什么解答:不能。

因为指针变量是一种特殊的变量,指针变量的值存放的是所指向变量的地址,两个地址相加并不能保证结果为一个有效的地址值,因而在 C 语言中指针变量相加是非法的。

【练习8-4】根据表所示,这组数据的冒泡排序其实循环到第 6 遍(即n-2)时就已经排好序了,说明有时候并不一定需要n-1 次循环。

请思考如何改进冒泡排序算法并编程实现(提示:当发现一遍循环后没有数据发生交换,说明已经排好序了)。

解答:设置一个标志变量flag,进入一轮循环前设置为0,在循环中有发生数据交换就改写flag 值为1。

当该轮循环结束后检查flag 值,如果变为 1 说明发生了数据交换,还没有排好序,如果为0 说明没有发生交换,已经排好序。

#include<>void bubble (int a[],int n);int main(void){int n,i,a[8];printf("Enter n (n<=8):");scanf("%d",&n);printf("Enter a[%d] : ",n);for(i=0;i<n;i++)scanf("%d",&a[i]);bubble(a,n);printf("After sorted, a[%d]=", n);for(i=0;i<n;i++)printf("%3d",a[i]);return 0;}void bubble(int a[], int n){int i,j,temp,flag;for(i=1;i<n;i++ ){flag=0;for(j=0;j<n-i;j++)if(a[j]>a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;flag=1;}if(flag==0)break;}}【练习8-5】重做例8-9,要求使用选择排序算法。

解答:#include<>void bubble(int a[], int n);int main(void){int i,n,a[8];printf("Enter n (n<=8): ");scanf("%d",&n);printf("Enter a[%d] :",n);for(i=0;i<n;i++)scanf("%d",&a[i]);bubble(a,n);printf("After sorted, a[%d]=",n);for(i=0;i<n;i++)printf("%3d",a[i]);return 0;}void bubble(int a[],int n){int i,j,temp,index;for(i=0;i<n-1;i++){index=i;for(j=i+1;j<n;j++)if(a[j]<a[index]) index=j;temp=a[i];a[i]=a[index];a[index]=temp;}}电码加密【练习8-6】在使用scanf( )函数时,输入参数列表需要使用取地址操作符&,但当参数为字符数组名时并没有使用,为什么如果在字符数组名前加上取地址操作符&,会发生什么解答:因为字符数组名的值是一个特殊的固定地址,可以看作是常量指针,因此不需要再使用取地址符来获取该数组的地址。

如果在字符数组名str 前加上取地址操作符&,那么对其取地址&str 可以看做是这个数组的第一个元素的地址,由于数组地址和数组第一个元素的地址相同,所以&str 表示地址值和str 表示的地址值是相等的。

对scanf()的变长参数列表的话,编译器只负责参数传递,怎么解释后边的几个地址的含义,是由前边的字符串确定的。

所以使用scanf(“%s”,st r)和scanf(“%s”,&str)都能通过编译且正常执行。

【练习8-7】 C 语言不允许用赋值表达式直接对数组赋值,为什么解答:数组名可以看作是常量指针,因为不可以对一个常量进行赋值,所以不允许用赋值表达式直接对数组进行赋值。

【练习8-8】输入一个字符串,把该字符串的前 3 个字母移到最后,输出变换后的字符串。

比如输入“abcdef”,输出为“defabc”。

解答:#include<>#include<>#define MAXLINE 100int main(void){char line[MAXLINE],str[4];int i;printf("Input the string:");gets(line);if(strlen(line)<3){printf("字符串长度小于3,不符合要求!\n");}for(i=0;i<3;i++)str[i]=line[i];str[i]='\0';for(i=3;line[i]!='\0';i++)line[i-3]=line[i];line[i-3]='\0';strcat(line,str);printf("%s%s\n","After changing: ",line);return 0;}【练习8-9】使用动态内存分配的方法实现例8-9 的冒泡排序。

解答:#include<>#include<>void bubble(int a[],int n);int main(void){int n,j,*a,i,temp;printf("Enter n(n<=8):");scanf("%d",&n);if((a=(int*)calloc(n,sizeof(int)))==NULL){printf("Not able to allocate memory.\n");exit(1);}printf("Ente a[%d]:",n);for(i=0;i<n;i++)scanf("%d",a+i);bubble(a,n);printf("After sorted,a[%d]=",n);for(i=0;i<n;i++)printf("%3d",*(a+i));free(a);return 0;}void bubble(int a[],int n){int i,j,temp;for(i=1;i<n;i++)for(j=0;j<n-i;j++)if(*(a+j)>*(a+j+1)){temp=*(a+j);*(a+j)=*(a+j+1);*(a+j+1)=temp;}}习题8一、选择题1.下列语句定义x 为指向int 类型变量 a 的指针,其中哪一个是正确的B 。

A.int a, *x = a; B. int a, *x = &a;C.int *x = &a,a; D.int a, x = a;以下选项中,对基本类型相同的指针变量不能进行运算的运算符是 A 。

A.+ B.- C.= D.==3.若有以下说明,且0<=i<10,则对数组元素的错误引用是 C 。

int a[ ] = {0,1,2,3,4,5,6,7,8,9}, *p = a,i;A.*(a+i) B.a[p-a+i] C.p+i D.*(&a[i])4.下列程序的输出结果是 B 。

int main(void){int a[10] = {0,1,2,3,4,5,6,7,8,9}, *p = a+3;printf(“%d”, *++p);return 0;}A.3 B.4 C.a[4]的地址D.非法5.对于下列程序,正确的是 A 。

void f(int *p){*p = 5;}int main(void){int a, *p;a = 10;p = &a;f(p);prin tf(“%d”, (*p)++);return 0;}A.5 B.6 C.10 D.11二、填空题1. 下列函数在一维数组a 中将x 插入到下标为i(i>=0)的元素前。

如果i>=元素的个数,则x 插入到末尾。

原有的元素个数存放在指针n 所指向的变量中,插入后元素个数加1。

相关文档
最新文档