第三节 指针运算符
-
运算符详解
-
指针的运算
3.4.1 运算符详解
内容:C语言中提供了两个与指针操作有关的运算符“&”和“*”。
(1)“&”运算符:取地址运算符,可获得操作数(变量)的内存地址。
(2)“*”运算符:间接访问运算符,可访问该指针所指向变量的值。
注意:指针变量存放的是内存中的地址编号,对指针变量的操作是对该编号操作,而加上间接访问运算符即可对指针变量中所指地址的值进行操作。
【程序现场】3-4-1
#include<stdio.h> int main(void) { int *p,a=5; printf("a = %d\n",a); p=&a; printf("p = %p\n",p); printf("*p = %d\n",*p+1); return 0; }
3.4.2指针的运算
说明:指针变量存放的是内存地址,所以进行的运算都是整数运算。
注意:
(1)由于指针变量的数据类型不同和各计算机存储器的编码方式不同,所以一个变量会占有多个内存单元,而进行保存、操作的一般都为该数据的首个内存单元编号。
(2)对指针变量进行整数运算时,所加减值表示加减整数倍个指针变量指向的数据类型的长度,即 指针变量+整数 等于 指针变量所指的地址 + 整数 × sizeof(指针的数据类型)。
【程序现场】3-4-2
#include<stdio.h> int main(void) { char *p_c,c='c'; int *p_a,a=5; double *p_d,d=2.5; printf("&c = %p\n",&c); p_c=&c; printf("p_c = %p\n",p_c+1); printf("&a = %p\n",&a); p_a=&a; printf("p_a = %p\n",p_a+1); printf("&d = %p\n",&d); p_d=&d; printf("p_c = %p\n",p_d+1); return 0; }