实验4 指针 下载本文

内容发布更新时间 : 2025/2/19 13:38:47星期一 下面是文章的全部内容请认真阅读。

实验4 指针

一、 实验目的

(1) 通过实验进一步掌握指针的概念,会定义和使用指针变量; (2) 能够正确使用数组的指针和指向数组的指针变量; (3) 能够正确使用字符串的指针和指向字符串的指针变量; (4) 能正确使用指向函数的指针变量。

二、 实验内容

写出实现下述两个问题的程序并调试

(1) 将一个3×3的矩阵转置,用一函数实现这一计算(在函数中只能使用指

针变量)。

在主函数中用scanf()函数输入以下矩阵元素:

1 3 5

7 9 11

13 15 17

将数组名作为函数的参数,在执行函数的过程中实现矩阵转置,函数调用结束后,在主程序中输出已转置的矩阵。

(2) 用一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数原

型为:

int strcmp(char *p1,char *p2);

? 两个串相等时,返回0 ? p1>p2时,返回值>0 ? p1

三、 实验指导

问题1提示:

本题目要求编程实现矩阵的转置,并且在实现这一操作时只能使用指针,因此解决这一问题时,应注意下面几个问题:

? 数组名是一个指针变量,但该指针变量是一个常量; ? int a[10] 中的a 的类型等同于 int *p 定义的指针变量p; ? int a[10][5]中定的a的类型等同于 int (*p)[5];

问题2提示:

? 字符串本质上就是一个一维字符数组(串尾附加了一个’\\0’); ? 字符串可用一个指向字符串的字符指针操作; ? 串相等是指两串字符个数相等、且每个字符都相等; ? 不相等时,以第一对不相等字符的大小决定。

四、 预习题 ? 选择题

1.变量的指针,其含义是指该变量的 。

A)值 B)地址 C)名 D)一个标志

2.已有定义int k=2;int *ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是 。

A)k=*ptr1+*ptr2 B)ptr2=k C)ptr1=ptr2 D)k=*ptr1*(*ptr2)

3.若有说明:int *p,m=5,n;以下程序段正确的是 。 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);下面函数的输出结果是 。

void print_value(int *x) { printf(“%d\\n”,++*x); }

A)23 B)24 C)25 D)26