欢迎来到天天文库
浏览记录
ID:20751686
大小:25.50 KB
页数:3页
时间:2018-10-15
《变量指针和指向变量指针变量》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、1.变量的指针和指向变量的指针变量读起来很拗口,说白了就是变量的地址和用来存放变量地址的地址变量。因为一个变量在编译的时候系统要为它分配一个地址,假如再用一个变量来存放这个地址,那么这个变量就叫做指向变量的指针变量,也就是用来存放变量地址的这么一个变量。所谓"指向"就是指存放××的地址,如指向变量的指针变量,"指向"就是指用来存放变量的地址,再如指向数组的指针变量,"指向"就是指存放数组的地址。只要理解了这个,指针也就不难了。另外,还有指向字符串的指针变量,指向函数的指针变量,指向指针的指针变量
2、等。1)指针变量的定义形式:类型标识符 *标识符 如:int*pointer;要注意两点:*表示pointer是个指针变量,在用这个变量的时候不能写成*pointer,*pointer是pointer指向的变量。一个指针变量只能指向同一个类型的变量。如上面pointer只能指向int型变量。2)指针变量的引用两个有关的运算符:&取地址运算符&a就代表变量a的地址*指针运算符 *a 就代表变量a的值2.数组的指针和指向数组的指针变量数组的指针指数组的起始地址,数组元素的指针指数组元素的地址。1)
3、指向数组元素的指针变量的定义与赋值定义和指向变量的指针变量定义相同,c规定数组名代表数组的首地址,即第一个数组元素地址。2)通过指针引用数组元素我们通常引用数组元素的形式是a,如果用指针可以这样引用,*(a+i),或定义一个指针变量p,将数组a的首地址赋给p,p=a;然后用*(p+i)引用。注意:指针变量p指向数组a首地址,则p++指向数组a的下一元素地址,即a[1]的地址。3)数组名作函数参数形参数组和实参数组之间并不是值传递,而是共用同一段地址,所以在函数调用过程中如果形参的值发生变化,则实
4、参的值也跟着变化。4)指向多维数组的指针和指针变量以二维数组为居多。假设定义了一个二维数组a[3][4],那么a代表整个二维数组的首地址,也代表第0行的首地址,同时也是第0行第0列的元素的首地址。a+0和a[0]代表第0行首地址,a+1和a[1]代表第一行的首地址。假设a是一个数组的首地址,那么如果a是一维的,a+I代表第I个元素的地址,如果a是二维的,则a+I代表第I行的首地址。那么第一行第二列的元素地址如何表示呢?a[1]+2或&a[1][2]或*(a+1)+2。我们只要记住:在二维数组中a
5、代表整个数组的首地址,a[I]代表第I行的首地址,a[I]与*(a+I)等价就行了。只要运用熟练了就没什么复杂的了。5)指向由m个整数组成的一维数组的指针变量如:int(*p)[4],p是一个指向包含4个元素的一维数组,如果p先指向a[0],则p+1指向a[1],即p的增值是以一维数组的长度为单位的,这里是4,举个例子:假设a[3][4]=,p先指向a[0]也就是数组a的首地址,那么p+1就是a[1]的首地址即元素9的地址,因为在定义p时int(*p)[4],定义一维数组长度为4,所以p+1就等
6、于加了一个一维数组的长度4。3.字符串的指针和指向字符串的指针变量1)字符串的表示形式c中字符串有两种表示形式:一种是数组,一种是字符指针charstring[]="Ilovec!";char*str="Ilovec!";其实指针形式也是在内存中开辟了一个数组,只不过数组的首地址存放在字符指针变量str中,千万不要认为str是一个字符串变量。2)字符串指针作函数参数实际上字符串指针就是数组的首地址。3)字符指针变量与字符数组的区别①字符数组由若干元素组成,每个元素存放一个字符,而字符指针变量只存
7、放字符串的首地址,不是整个字符串②对数组初始化要用static,对指针变量不用。③对字符数组赋值,只能对各个元素赋值,不能象下面这样:charstr[14];str="Ilovec!";对指针变量可以,char*str;str="Ilovec!";注意:此时赋给str的不是字符,而是字符串首地址。④数组在定义和编译时分配内存单元,而指针变量定义后最好将其初始化,否则指针变量的值会指向一个不确定
此文档下载收益归作者所有