C语言中的指针操作
2011-11-15 15:02
120 查看
C语言中指针操作主要有以下几种:
指针赋值(assignment):将一个地址赋给指针
求值(value-finding/dereferencing):通过运算符*求出指针所指向地址中存储的数值。
取指针地址:可以使用&获得指针变量本身地址。
将整数加给指针:使用+将整数加给指针,该整数会与指针所指类型占字节数相乘,并将乘积加到初始地址。
指针自增:对指向某数组元素的指针做自增运算,可以让指针指向数组下一个元素。
指针减去一个整数:类比上面的4。
指针自减:类比上面的5.
求差值:通常对指向一个数组两个不同元素的指针求差值,代表两个元素位置的差值。
示例:
指针赋值(assignment):将一个地址赋给指针
求值(value-finding/dereferencing):通过运算符*求出指针所指向地址中存储的数值。
取指针地址:可以使用&获得指针变量本身地址。
将整数加给指针:使用+将整数加给指针,该整数会与指针所指类型占字节数相乘,并将乘积加到初始地址。
指针自增:对指向某数组元素的指针做自增运算,可以让指针指向数组下一个元素。
指针减去一个整数:类比上面的4。
指针自减:类比上面的5.
求差值:通常对指向一个数组两个不同元素的指针求差值,代表两个元素位置的差值。
示例:
#include <stdio.h> int main(void) { int urn[5] = {100,200,300,400,500}; int *ptr1,*ptr2,*ptr3; ptr1 = urn; ptr2 = &urn[2]; 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); }
相关文章推荐
- C语言的指针、链表的原理和操作
- 再谈C语言中数组和指针之间的互操作
- 第10周 C语言及程序设计提高例程-35 使用指针操作二维数组
- 【C语言】文件指针与文件位置指针,位置指针相关操作库函数
- C语言的指针、链表的原理和各类操作
- C语言中数组和指针的互操作
- C语言中sizeof对数组和对指针操作的不同,以及sizeof中表达式赋值问题
- 关于C语言指针的不安全操作
- C语言指针操作
- 【C语言】文件指针与文件位置指针,位置指针相关操作库函数
- [c语言笔记]关于指针操作中使用异或交换两个变量的值
- C语言的指针、链表的原理和各类操作
- 【C语言】文件指针与文件位置指针,位置指针相关操作库函数
- C语言-指针操作
- C语言指针、链表与文件操作详解
- C语言中file文件指针概念及其操作
- ID 比较练习 C语言 文件操作 位置指针
- 程序猿之---C语言细节30(数组和指针操作测试题,你能全答对吗??)
- 【C语言】指针、链表的原理和各类操作相关心得以及学生信息管理系统的改写报告
- C语言 指针操作练习