VC语言_8指针
- 格式:ppt
- 大小:208.50 KB
- 文档页数:46


.
.. 姓名
学号 班级
说明:
1. 本次上机内容分两次上机完成。
2. 将本文档改名为“学号_姓名_班级_Lab8.doc”,按照本说明完成以下实验内容;
3. 在16周周日前通过课程中心提交本文档。
实验内容和实验要求(实验指导P148)
1.练习题一
运行结果截图:
2.练习题二
纠错:int FindMax( int score[][STU], int n, int m, int *pRow, int *pCol ) STU改为ARR_SIZE
运行结果截图:
#include
#define CLASS 3
#define ARR_SIZE 40
int FindMax(int score[CLASS][ARR_SIZE],int n,int m,int *pRow,int *pCol);
void main()
{
int score[CLASS][ARR_SIZE],i,j,n,maxScore,row,col;
printf("Please enter student number in a class:");
scanf("%d",&n);
printf("Please enter score:\n");
for(i=0;i
{
for(j=0;j
scanf("%d",&score[i][j]);
} .
.. maxScore=FindMax(score,n,CLASS,&row,&col);
printf("maxScore=%d,class=%d,number=%d\n",maxScore,row+1,col+1);
}
int FindMax(int score[][ARR_SIZE],int n,int m,int *pRow,int *pCol)
{
int i,j,maxScore;
指针习题及答案
一.选择题
1.变量的指针,其含义是指该变量的 B 。
A)值 B)地址 C)名 D)一个标志
2.已有定义int k=2;int *ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是 B 。
A)k=*ptr1+*ptr2 B)ptr2=k C)ptr1=ptr2 D)k=*ptr1*(*ptr2)
3.若有说明:int *p,m=5,n;以下程序段正确的是 D 。
A)p=&n ; B)p = &n ;
scanf(“%d”,&p); scanf(“%d”,*p);
C)scanf(“%d”,&n); D)p = &n ;
*p=n ; *p = m ;
4.已有变量定义和函数调用语句:int a=25;print_value(&a);下面函数的输出结果是
D 。
void print_value(int *x)
{ printf(“%d\n”,++*x); }
A)23 B)24 C)25 D)26
5.若有说明:int *p1, *p2,m=5,n;以下均是正确赋值语句的选项是 C 。
A)p1=&m; p2=&p1 ; B)p1=&m; p2=&n; *p1=*p2 ;
第8章 善于利用指针
指針是什么
如果在程序中定义了一个变量,在对程序进行编译时,系统
就会给该变量分配内存单元
内存区的每一个字节有一个编号,这就是“地址”,它相当于
旅馆中的房间号。
在地址所标识的内存单元中存放数据,这相当于旅馆房间中
居住的旅客一样。
由于通过地址能找到所需的变量单元,我们可以说,地址指
向该变量单元。
将地址形象化地称为“指针”
务必弄清楚存储单元的地址和存储单元的内容这两个概念的
区别
指针变量
2 怎样定义指针变量
定义指针变量的一般形式为:
类 型 * 指针变量名;
如:int *pointer_1, *pointer_2; • int是为指针变量指定的“基类型”
• 基类型指定指针变量可指向的变量类型
• 如pointer_1可以指向整型变量,但不能指向浮点型变量
2 怎样定义指针变量
下面都是合法的定义和初始化:
float *pointer_3; char *pointer_4; int a,b; int *pointer_1=&a,*pointer_2=&b;
3 怎样引用指针变量 在引用指针变量时,可能有三种情况:
• 给指针变量赋值。如:p=&a;
• 引用指针变量指向的变量。如有
p=&a; *p=1; 则执行printf(“%d”,*p); 将输出1
• 引用指针变量的值。如:printf(“%o”,p);
3 怎样引用指针变量
要熟练掌握两个有关的运算符:
(1) & 取地址运算符。 &a是变量a的地址
(2) * 指针运算符(“间接访问”运算符)
如果: p指向变量a,则*p就代表a。
k=*p; (把a的值赋给k)
*p=1; (把1赋给a)
4 指针变量作为函数参数
通过指针引用数组
1 数组元素的指针
所谓数组元素的指针就是数组元素的地址
可以用一个指针变量指向一个数组元素
int a[10]={1,3,5,7,9,11,13,15,17,19}; int *p; p=&a[0];
国家二级C语言机试(编译预处理和指针)模拟试卷8
(总分52, 做题时间90分钟)
1. 选择题
1.
以下叙述中正确的是
SSS_SINGLE_SEL
A 在C语言中,预处理命令行都以”#”开头
B 预处理命令行必须位于C源程序的起始位置
C #include必须放在C程序的开头
D C语言的预处理不能实现宏定义和条件编译的功能
分值: 2
答案:A
解析:在C语言中,凡是以“#”号开头的行,都称为“编译预处理”命令行。预处理命令可以放在程序中的任何位置,其有效范围是从定义开始到文件结束。预处理命令有宏定义、文件包含和条件编译三类。#include命令行表示程序中要引用C标准函数库中的标准输入输出函数。
2.
有以下程序,程序运行后的输出结果是 #define PT 3.5; #define
S(x)PT*x*x; main(){int a=1,b=2; printf("%4.1 f\n",S(a+b));}
SSS_SINGLE_SEL
A 31.5
B 7.5
C 程序有错无输出结果
D 14.0
分值: 2
答案:C
解析:本题考查宏定义。预处理语句后面不能加分号,因此程序有错。如果没加分号的话S(a+b)=PT*a+b*a+b=3.5*1+2*1+2=7.5。
3.
以下关于宏的叙述中正确的是
SSS_SINGLE_SEL
A 宏定义必须位于源程序中所有语句之前
B 宏名必须用大写字母表示
C 宏调用比函数调用耗费时间
D 宏替换没有数据类型限制
分值: 2
答案:D
解析:本题考查宏替换的规则。宏替换分为简单的字符替换和带参数的宏替换两类。使用宏时应注意几点:①宏定义仅仅是符号替换,不是赋值语句,因此不做语法检查;②为了区别程序中其他的标识符,宏名的定义通常用大写字母,但不是必须用大写;③双引号中出现的宏名不替换;④使用宏定义可以嵌套,即后定义的宏中可以使用先定义的宏。