可以通过一般的加法或增量运算符来增加一个指针变量的值。
从指针变量中减去一个整数 可以使用-运算符来从一个指针变量中减去一个整数。指针变量必须是第一个操作数。 减小指针变量的值 指针变量的减量运算。 求差值 可以求出两个指针变量间的差值。通常对分别指向同一个数组内两个元素的指针变量求差值,以求出元素之间的距离。差值的单位是相应类型的大小。 比较 可以使用关系运算符来比较两个指针变量的值(前提是两个指针变量具有相同的类型)。
#include <stdio.h> // 指针变量的定义 int main1() { int a; // 定义一个指针变量, // *表示这个变量是指针,内部必须要存地址 // int 这个指针指向的类型是 int 类型数据 int *p; p = &a; printf ("&a = %p\n", &a); printf ("p = %p\n", p); printf ("&p = %p\n", &p); return 0; } // 指针变量的大小 int main2() { int a; int *p = &a; char ch; char *pch = &ch; // 指针内部存的是地址,32位情况下,地址都是32位的 // 所以在32位编译器下,指针都是4个字节 printf ("p = %d\n", sizeof(p)); printf ("pch = %d\n", sizeof(pch)); return 0; } // 指针变量的取值 int main3() { int a = 10; int *p = &a; printf ("a = %d\n", a); // 在变量定义的时候,*代表变量的类型是指针 // 在使用指针变量的时候,*代表去指针指向的那一块内存的值 // * + 地址, 代表那个那个地址所表示的内存 printf ("*p = %d\n", *p); *p = 200; printf ("a = %d\n", a); return 0; } int main() { int a = 10; int b = 20; int *pa = &a; int *pb = &b; // 通过 pa 与 pb 交换 a 与 b 的值 int tmp = *pa; *pa = *pb; *pb = tmp; return 0; } // * & int main() { int a = 10; int *p = &a; // *&a ==> *(&a) ==> *p ==> a // &*p ==> &(*p) ==> &a ==> p return 0; }
