Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1011714
  • 博文数量: 146
  • 博客积分: 3444
  • 博客等级: 中校
  • 技术积分: 1602
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-21 15:18
文章分类

全部博文(146)

文章存档

2014年(9)

2013年(3)

2012年(6)

2011年(44)

2010年(38)

2009年(46)

分类: C/C++

2011-09-09 15:22:26

C语言指针教学提纲
一、讲述数据在计算机中的存放方式,顺便讲用符号表管理变量
1、讲述我们常说的有多少内存的意思,内存的单位
2、画内存图,并讲述各种类型变量char ,short,long 在内存图中的存放情况
3、结合变量地址讲述指针的概念及作用。
4、讲述怎么样通过指针操作变量,并引出怎么操作针指变量本身。
5、结合数组和指针,
讲述指针其实也是一个变量,所以他本身也可以像其它变量一样存在符号表中,所以也可以对他进行取地址操作。加减操作。
(数据名其实就是一个指针类型的常量,可以进行地址类型的操作,但无法改变其值)
6、讲述指针变量也有类型之分,一个指针变量只能指向某种特定的数据类型。这就是为什么指针加1减1不是加一个字节而是加一个特定数据类型所占用的字节数。
7、为什么需要指针,对数据进行排序。
8、研究如下程序的执行结果
#include
void fun(int *a,int *b)
{int *k;
k=a;a=b;b=k;
}
main( )
{int a=3,b=6,*x=&a,*y=&b;
fun(x,y);
printf("%d,%d ",a,b);
}
结果是 3,6
怎么样交换 a,b的值呢?
图示上述程序中各变量在内存中的存放情况及程序的运行过程
Main符号表
变量名 类型 地址 初值   0x1F  
a int 0x4 32   0x1E  
b int 0x8 45   0x1D  
x int * 0xC 0x4(&a) k   0x1C  
y int * 0x10 0x8(&b)   0x1B  
          0x1A  
          0x19  
     
 
fun_b 0x8 0x18 fun_b=&b=0x8=y
  0x17  
fun符号表(进入本函数后main函数   0x16  
的符号表被屏蔽不再使用)   0x15  
变量名 类型 地址 初值 fun_a 0x4 0x14 fun_a=&a=0x4=x
a int * 0x14 0x4(&a)   0x13  
b int * 0x18 0x8(&b)   0x12  
k int * 0x1C     0x11  
        y 0x8 0x10 y=0x8=&b *y=45=b
          0xF  
          0xE  
          0xD  
        x 0x4 0xC x=0x4=&a *x=32=a
          0xB  
          0xA  
          0x9  
b 45 0x8 b=45;&b=0x8
  0x7  
  0x6  
  0x5  
a 32 0x4 a=32;&a=0x4
  0x3  
  0x2  
  0x1  
  0x0  

 

 指针内存示意图.xls   

阅读(918) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~