指针是通过地址来访问变量的一种特殊的数据类型,属于动态的数据结构,它可以在需要时产生,用完后则又可以取消或回收,以减少占用的内存空间。指针变量与其他类型的变量不同,它占有的不是数据,而是地址。
由于动态数据结构的变量是在程序执行过程中动态生成的,所以不能预先予以说明,无法预先给这些变量起名字,访问时也无法通过名字直接输出或显示,而只能用指针得到其地址,然后间接访问。
和其它变量一样,指针是基本的变量,所不同的是指针包含一个实际的数据,该数据代表一个可以找到实际信息的内存地址。这是一个非常重要的概念。许多程序和思想依靠指针作为他们设计的基础。
开始
怎样定义一个指针呢?除了你需要在变量的名称前面加一个星号外,其它的和别的变量定义一样。举个例子,以下代码定义了两个指针变量,它们都指向一个整数。
int* pNumberOne;
int* pNumberTwo;
注意到两个变量名称前的前缀’p’了么?这是一个惯例,用来表示这个变量是个指针。
现在,让我们将这些指针实际的指向某些东西:
pNumberOne = &some_number;
pNumberTwo = &some_other_number;
‘&’符号应该读作”什么什么的地址”,它返回一个变量在内存中的地址,设置到左侧的变量中。因此,在这个例子中,pNumberOne设置和some_number的地址相同,因此pNumberOne现在指向some_number。
现在,如果我们想访问some_number的地址,可以使用pNumberOne。如果我们想通过pNumberOne访问some_number的值,那么应该用*pNumberOne。这个星号表示解除指针的参照,应该读作“什么什么指向的内存区域”。
到现在我们学到了什么?举个例子
哟,有许多东西需要理解。我的建议是,如果你有哪个概念没有弄清楚的话,那么,不妨再看一遍。指针是个复杂的对象,可能需要花费一段时间来掌握它。
开始
怎样定义一个指针呢?除了你需要在变量的名称前面加一个星号外,其它的和别的变量定义一样。举个例子,以下代码定义了两个指针变量,它们都指向一个整数。
int* pNumberOne;
int* pNumberTwo;
注意到两个变量名称前的前缀’p’了么?这是一个惯例,用来表示这个变量是个指针。
现在,让我们将这些指针实际的指向某些东西:
pNumberOne = &some_number;
pNumberTwo = &some_other_number;
‘&’符号应该读作”什么什么的地址”,它返回一个变量在内存中的地址,设置到左侧的变量中。因此,在这个例子中,pNumberOne设置和some_number的地址相同,因此pNumberOne现在指向some_number。
现在,如果我们想访问some_number的地址,可以使用pNumberOne。如果我们想通过pNumberOne访问some_number的值,那么应该用*pNumberOne。这个星号表示解除指针的参照,应该读作“什么什么指向的内存区域”。
到现在我们学到了什么?举个例子
哟,有许多东西需要理解。我的建议是,如果你有哪个概念没有弄清楚的话,那么,不妨再看一遍。指针是个复杂的对象,可能需要花费一段时间来掌握它。
指针是c语言的难点,很难被学生接受。本部分主要演示:指针的定义,普通变量的定义,建立关联,直接赋值,间接赋值。为了简便,暂时只讨论整形。
设计:
在组合框中选择操作的类型,在弹出的对话框中做进一步的处理。二十个编辑模拟内存,十个为整形,十个为指针区.由于“内存”的限制,很容易“内存不足”。二十个静态控件显示变量名及模拟内存地址。
整形数组记录数值,字符串数组记录变量名,注意对应。
定义:加上变量名,并随机赋初值。
关联:在对话框的组合框中选择变量,前有提示信息"=&",改变指针的值,并将相应的编辑框连线。
赋值:在个对话框中选择整形变量或指针变量,并输入值。
有必要的话,将CEdit改成CRichEdit,用SetSel反向显示正在处理的模拟空间。
设计:
在组合框中选择操作的类型,在弹出的对话框中做进一步的处理。二十个编辑模拟内存,十个为整形,十个为指针区.由于“内存”的限制,很容易“内存不足”。二十个静态控件显示变量名及模拟内存地址。
整形数组记录数值,字符串数组记录变量名,注意对应。
定义:加上变量名,并随机赋初值。
关联:在对话框的组合框中选择变量,前有提示信息"=&",改变指针的值,并将相应的编辑框连线。
赋值:在个对话框中选择整形变量或指针变量,并输入值。
有必要的话,将CEdit改成CRichEdit,用SetSel反向显示正在处理的模拟空间。