本文共 1347 字,大约阅读时间需要 4 分钟。
实验目的:
理解指针类型。
实验步骤:
1.分组讨论下面的说法或问题。
1.1指针变量存储的内容为地址,而地址是有类型的,因为地址必须是某存储单元的地址时才有意义(即可以通过地址根据类型使用相关存储单元),因此,指针变量本质上指向的是某类型的存储单元。
1.2有了指针变量就是又多了一种使用存储单元的途径。
1.3地址是编号是整数,为何不能用整数给指针变量赋值?但为何使用强制类型转换之后就可以了?编译系统为何只尽到提醒的义务,而不绝对禁止呢?
2.已知有int i=3, *pi=&i;
2.1分析下面语句的输出(不能确定时用某某变量的地址代替)并编程验证。
printf("%x,%x,%x\n", &i, i,*i);
printf("%x,%x,%x\n", &pi,pi, *pi);
2.2根据程序的输出,画出变量i和pi简化的存储状态图。
2.3分析下面语句的输出并编程验证。
printf("%x,%x,%x\n", pi, *&pi,&*p);
3.有int i = 3, *pi, *pj;
pi = &i;
pj = pi;
3.1画出变量i、pi和pj的形象状态图。
3.2对于变量i所标识的存储单元,现在有几种使用途径?
3.3分析下面语句的输出并编程验证。
*pj = i + *pi;
printf("%d,%d,%d\n", i, *pi,*pj);
4.分析并比较下面三个程序的输出。
4.1
#include <stdio.h>
void main( )
{
inti = 3, j = 2;
int*pi, *pj, *ptemp;
pi = &i;
pj = &j;
printf("%d,%d\n", i, j);
printf("%d,%d\n", *pi, *pj);
ptemp = pi;
pi = pj;
pj= ptemp;
printf("%d,%d\n", i, j);
printf("%d,%d\n", *pi, *pj);
}
4.2
#include <stdio.h>
void main( )
{
inti = 3, j = 2, temp;
int*pi, *pj;
pi = &i;
pj = &j;
printf("%d,%d\n", i, j);
printf("%d,%d\n", *pi, *pj);
temp = *pi;
*pi = *pj;
*pj= temp;
printf("%d,%d\n", i, j);
printf("%d,%d\n", *pi, *pj);
}
4.3
#include <stdio.h>
void main( )
{
inti = 3, j = 2, temp;
int*pi, *pj;
pi = &i;
pj = &j;
printf("%d,%d\n", i, j);
printf("%d,%d\n", *pi, *pj);
temp = i;
i = j;
j= temp;
printf("%d,%d\n", i, j);
printf("%d,%d\n", *pi, *pj);
}
5.有int *pi;,如何评价语句pi=π?
转载地址:http://xddti.baihongyu.com/