wawlian 发表于 2013-1-26 12:33:33

C语言中指针的操作

C语言中指针操作主要有以下几种:

[*]指针赋值(assignment):将一个地址赋给指针
[*]求值(value-finding/dereferencing):通过运算符*求出指针所指向地址中存储的数值。
[*]取指针地址:可以使用&获得指针变量本身地址。
[*]将整数加给指针:使用+将整数加给指针,该整数会与指针所指类型占字节数相乘,并将乘积加到初始地址。
[*]指针自增:对指向某数组元素的指针做自增运算,可以让指针指向数组下一个元素。
[*]指针减去一个整数:类比上面的4。
[*]指针自减:类比上面的5.
[*]求差值:通常对指向一个数组两个不同元素的指针求差值,代表两个元素位置的差值。
示例:
#include <stdio.h>int main(void) {int urn = {100,200,300,400,500};int *ptr1,*ptr2,*ptr3;ptr1 = urn;ptr2 = &urn;printf("pointer value, dereferenced pointer, pointer address:\n");printf("ptr1 = %u, *ptr1 = %d, &ptr1 = %u\n",ptr1,*ptr1,&ptr1);//指针加法ptr3 = ptr1 + 4;printf("adding an int to a pointer:\n");printf("ptr1 + 4 = %u,*(ptr1 + 4)=%d\n",ptr1+4,*(ptr1+4));//指针自增ptr1++;printf("values after ptr1++:\n");printf("ptr1=%u,*ptr1=%d,&ptr1=%u\n",ptr1,*ptr1,&ptr1);//指针自减ptr2--;printf("values after ptr2--:\n");printf("ptr2=%u,*ptr2=%d,&ptr2=%u\n",ptr2,*ptr2,&ptr2);--ptr1;++ptr2;printf("Pointers reset to original values:\n");printf("ptr1=%u,ptr2=%u\n",ptr1,ptr2);//指针相减printf("subtracting one pointer from another:\n");printf("ptr2=%u,ptr1=%u,ptr2-ptr1=%u\n",ptr2,ptr1,ptr2-ptr1);//一个指针减去一个整数printf("subtracting an int from a pointer:\n");printf("ptr3=%u,ptr3-2=%u\n",ptr3,ptr3-2);} 程序运行结果如下图:
http://dl.iteye.com/upload/picture/pic/101216/3278e9c1-ef84-38e3-89b5-54b6bdb94aa6.png
页: [1]
查看完整版本: C语言中指针的操作