当前位置:C++技术网 > 资讯 > C语言基础教程:10 指针入门

C语言基础教程:10 指针入门

更新时间:2015-09-04 16:10:08浏览次数:1+次

啊哈,终于到指针了,对于这个被称为C语言灵魂的指针,大家不要有什么畏惧心理,我们简单的走一遭。

我们平时定义变量诸如int temp;之类的那么如何定义指针变量呢?语法层面上是int *temp(或者int* temp) ;那么问题来了,一般的变量和指针变量之间到底有什么区别呢?说道这个就不得不说一下内存了。由于windows的原因,为了实现各种保护,各种安全机制,各种说的天花乱最的进程独立,所以,我们的程序所看见的是一种被称为“虚拟内存”的玩意(注意点,这边的虚拟内存又不是指的那个物理内存不够时暂时开辟硬盘作为中转站的虚拟内存,破概念真多)。好了,有了内存的概念那么自然就要讲到地址的概念了。地址不就是门牌号嘛。一个地址就对应着一个字节的物理内存单元(当然是不是一个字节要看硬件制造商)

  好了,有了内存的铺垫,现在自然也就好理解指针了。一般的变量保存的是内存单元里面的数据,而指针变量则是保存的那块内存空间的起始地址。差不多指针和普通变量就这么点区别,但是就这么一点点区别带来的变化可谓翻天盖地。下面来程序:


#include <stdio.h>
#include <stdlib.h>
int main()
{
	int temp=8;
	int *ptemp=NULL;
	printf("未通过指针改变值之前内存内容为:%d\n",temp);
	ptemp = &temp;
	*ptemp = 88;
    printf("通过指针改变值之后内存内容为:%d\n",temp);
	return 0;
}


运行结果:

下面来讲解一些知识点:

&是取地址操作符,就是将变量对应的内存地址取出来。

*在定义指针时是说明符,说明这个变量是指针,但在以后的使用过程中,它就是解引用操作符了。揉开来说就是取得变量中保存的地址所对应的内存空间的内容

&*是一对小冤家。

ptemp = &temp;//temp所对应的地址取出来给ptemp这个变量

*ptemp = 88;//通过*间接地对temp的内存空间进行赋值操作。

*ptemptemp这两个变量所操作的就是同一块内存空间了。

 

好了,指针最简单的概念已经有了,总结一下就是:

普通变量保存的是内存空间中的值而指针变量保存的是内存空间的地址。

要想往这块内存中存或者取内容的话,需要‘*’操作符。

引入就到这,关于指针的高级话题还有很多。