实验9-1 指针类型

实验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=&pi;?


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值