C语言导航 3.3指针运算符
第三节 指针运算符
-
运算符详解
-
指针的运算
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;}