C语言中的指针问题

教我们C语言的老师曾说过,在C语言中如果不学习指针就相当于没学,所以,此次,我与大家交流的主题就是C语言中的指针问题。

指针变量:简单的说,指针是一种数据类型,用来表示内存地址。使用指针数据类型声明变量就是指针变量;而对内存空间的访问有两种访问方式;直接访问和间接访问。直接访问:直接从空间的地址获取该内存内容的访问方式叫做内存的“直接访问”;而要先从其他内存空间获得要访问的内存空间地址,再根据该地址访问目的空间的方法就是内存的“间接访问”。

指针变量的定义:C语言中指针类型由两部分组成:数据类型和指针操作符(数据类型名  *指针变量名;);其中,数据类型名可以为任何数据类型,该数据类型名声明了指针变量指向的内存空间存储的数据类型。定义指针变量时,一般将指针操作符放在靠近变量名的位置(例:char*cp是将变量cp声明为一个char型指针,即指针变量cp指向一个char型内存空间;int*ip是将变量ip声明为一个int型指针,即指针变量ip指向一个int型内存空间;float*fp是将变量fp声明为一个float型指针,即指针变量fp指向一个float型内存空间),在使用指针变量时,必须明确该指针变量指向的内存空间(变量),因此,必须对指针变量初始化;如果不能明确设定其指向的对象,就像其初始化为NULL,注:NULL的值为0)。

指针可用来指向数组或指向数组中的一个元素,当指针指向一个数组时,可通过指针来访问数组中的元素。

指针与地址的区别:指针意味着已经有一个指针变量的存在,它的值是一个地址,指针变量本身也存放在一个长度为四个字节的地址当中,而地址本身并不代表有任何变量存在;指针的值,如果没有限制,通常是可以变化的,也可以指向另外一个地址,地址表示内存空间的一个位置点,它是用来赋给指针的,地址本生没有大小的概念,指针指向变量的大小,取决于地址后面存放的变量类型。

关于指针的例子:

1.交换两个×××变量x和y的值

spacer.gif

若输入的数为6,3,则显示结果为:

spacer.gif

2.由键盘任意输入一串字符,统计其中大写字母iA,小写字母ia,其他字符个数iother

spacer.gif

若输入的数为bwiheBIS3829;则结果如下:

spacer.gif