实验9-1 指针类型
2012-04-26 22:16
363 查看
实验9-1 指针类型
实验目的:理解指针类型。
实验步骤:
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=π?
相关文章推荐
- 关于指针类型转换的一个有趣实验
- 不允许指针指向不完整的类类型
- 指针的类型和指针所指向的类型说明
- warning C4150: 删除指向不完整“XXX”类型的指针;没有调用析构函数
- 实验9 指针1 1、程序填空:下列程序在数组中同时查找最大元素和最小元素的下标,分别存放在 main()函数的max 和 min 变量中。要求:根据运行结果分析程序和填空,并注释说明填充依据。
- Mat 数据类型指针ptr 的使用
- 指针->指针的类型
- C++不允许使用指向不完整类型的指针
- C++的指针类型转换
- 指针类型:指向3行4列的整形二维数组
- C语言学习6 :指针的定义,指针类型要合法,指针要初始化,指针做函数参数,数组和指针的通用性,指针+1所代表的空间,void * 指针,交换函数中的指针,数组和字符型指针区别,字符型指针的应用,使用指针完成字符操作函数
- 实验10 指针2
- c/c++ 函数类型和函数指针类型 详解
- 实验10指针2(1)输入一个字符串和一个正整数x,将该字符串中的后x个字符复制到另一个字符串y中,输出字符串y;再对y串的内容前后倒置后存入数组z中并输出。
- 关于结构体指针类型转换的小结
- CSharp Tips:调用Win32 API如何处理指针类型的参数.doc
- 细节问题系列之指针类型强制转换
- 使用传指针避免类型自动转换
- golang传递接口类型参数时,什么时候用指针
- 关于函数返回值为指针类型的分析