- 浏览: 279247 次
- 性别:
文章分类
最新评论
一. 指针的基本操作有:赋值(assignment),求值(value-finding)或取值(dereferencing),区指针地址,将一个整数家给指针,增加指针的值,从指针中减去一个整数,减小指针的值,求差值(Differencing),比较。
下面以一个例子进行说明:
#include<stdio.h> int main(void) { int *ptr1,*ptr2,*ptr3; int urn[5] = {100,200,300,400,500}; ptr1 = urn; //把一个地址赋给指针 ptr2 = &urn[2]; //把一个地址赋给指针 printf("ptr1 = %p,*ptr1 = %d,&ptr1 = %p\n",ptr1,*ptr1,&ptr1); //指针加法 ptr3 = ptr1 +4; printf("nadding an int to a pointer:\n"); printf("ptr1 +4 = %p,*(ptr1 +3) = %d\n",ptr1+4,*(ptr1+3)); ptr1++; //递增指针 printf("\n values after ptr++\n"); printf("ptr1 = %p,*ptr1 = %d,&ptr1 = %p\n",ptr1,*ptr1,&ptr1); ptr2--; //递减指针 printf("\n values after ptr--\n"); printf("ptr2 = %p,*ptr2 = %d,&ptr2 = %p\n",ptr2,*ptr2,&ptr2); --ptr1; //恢复初始值 ++ptr2; printf("\npointers reset to original values:\n"); printf("ptr1 = %p,ptr2 = %p",ptr1,ptr2); printf("\nsubstracting one pointer from another:\n"); //一个指针减去另一个指针 printf("ptr2 = %p,ptr1 = %p,ptr2 -ptr1 = %d\n",&ptr2,ptr1,ptr2-ptr1); printf("\nsubstracting an int from another:\n"); printf("ptr3 = %p,ptr3 -2 = %p\n",ptr3,ptr3-2); //一个指针减去一个整数 return 0; }
运行结果:
ptr1 = 0026FE5C,*ptr1 = 100,&ptr1 = 0026FE90
nadding an int to a pointer:
ptr1 +4 = 0026FE6C,*(ptr1 +3) = 400
values after ptr++
ptr1 = 0026FE60,*ptr1 = 200,&ptr1 = 0026FE90
values after ptr--
ptr2 = 0026FE60,*ptr2 = 200,&ptr2 = 0026FE84
pointers reset to original values:
ptr1 = 0026FE5C,ptr2 = 0026FE64
substracting one pointer from another:
ptr2 = 0026FE84,ptr1 = 0026FE5C,ptr2 -ptr1 = 2
substracting an int from another:
ptr3 = 0026FE6C,ptr3 -2 = 0026FE64
请按任意键继续. . .
二.指针的注意事项
1.不能对未初始化的指针取值(赋值)
如:
int *pt; //一个未初始化的指针
*pt = 5; //一个可怕的错误
这段代码的第二行把数值5存储在pt所指向的地址。但是由于pt未初始化,因此的的值是随机的,不知道5会被存储到什么位置。这个位置也许会对系统危害不大,但也许会覆盖程序
数据或者代码,甚至导致程序的崩溃。切记:当创建一个指针时,系统只分配了用来存储指针本身的内存空间,并不分配用来存储数据的内容空间。因此在使用指针之前,必须给它赋予一个
以分配的内存地址。比如,可把一个以存在的变量地址赋给指针,或者使用函数malloc()来首先分配内存。
发表评论
-
C中结构体
2013-01-09 15:47 591把结构体保存到文件中,用fwrite()函数: fwrite ... -
关于socket编程中基本函数介绍
2012-11-03 13:57 997源自:http://blog.sina.com.cn/s/bl ... -
C中需要注意的小问题
2012-09-27 08:59 7831.在用scanf()函数读入double型数值时要用%lf的 ... -
指针和多维数组
2011-12-26 10:03 786摘自:《C primer plus》 指针和多位数组 ... -
C中<ctype.h>库
2011-12-19 20:21 695标准库<ctype.h> 1 ... -
C中double类型数据的输入和输出
2011-12-19 10:04 12347double a; scanf(" ... -
C中printf()和scanf()函数说明
2011-12-16 19:58 1559下面是对printf()和scanf()函数的说明: ... -
C中转义序列及其含义
2011-12-15 20:27 942转义序列: 序列 ... -
C中各数据类型取值范围
2011-12-15 19:31 13651.标准头文件<limits.h>中包含了 ... -
C中常用的类型转换函数
2011-12-14 17:34 785源自:http://hi.baidu.com/hao_%BF% ... -
C语言格式化输出系统时间
2011-12-14 17:04 5899源自:http://blog.csdn.net/jiadeli ... -
C中目标代码文件,可执行文件和库
2011-12-14 10:19 1932C编程的基本策略是使用程序将源代码文件转换为可执行 ... -
vs2008下vc的库函数及头文件存放位置
2011-12-13 22:14 4504在写C/C++程序时总会在开头包含一些头文件,如:#inclu ... -
malloc()函数
2011-12-12 17:35 0待写 -
用C写的模拟掷骰子程序
2011-12-12 16:47 2320整理自:《C Primer Plus》第五版 此程序包 ... -
C中字符串的输入输出及相关函数
2011-12-27 21:59 3821//本节内容摘自对Stephen Prata的《C Prime ... -
关于*与++的优先级
2011-12-11 16:53 1663C中一元运算符*和++具有相等的优先级,但它们在结合时是从右向 ... -
C中关于数组参数的传递
2011-12-09 11:43 894编写一个对数组进行操作的函数,目的是返回数组内所用元素的和。 ... -
C中有关数组的说明
2011-12-09 11:10 747下面介绍一下关于数组的一些说明: 在数组声明时必须 ... -
C语言中对sizeof()和strlen()的说明
2011-12-09 10:01 10931.sizeof函数 sizeof函数返回表达式所占的内存空 ...
相关推荐
要了解指针,多多少少会出现一些比较复杂的类型,所以我先介绍一下如何完全理解一个复杂类型,要理解复杂类型其实很简单,一个类型里总会出现很多运算符,他们也像普通的表达式一样,有优先级,其优先级和运算优先级...
指针有关事项,对于空指针和未赋值的指针的一些辨析,同时也加入了void指针的赋值和用法
c语言指针常见指针及如何使用附带相关基本概念 C语言中的指针是一种特殊的数据类型,它存储了一个内存...使用C语言指针需要掌握指针的基本概念和语法规则,理解指针的应用场景和注意事项,才能编写出高效、可靠的程序。
许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误。本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧。
□ 要想在编写代码的时候尽可能避免指针带来的各种陷阱和问题,就需要知道不恰当地使用指针到底会引发哪些问题, 为什么会引发这些问题,以及如何去解决这些问题。 1、使用空指针 2、使用指向随机内容的指针 3、使用...
指针是C语言中的难点,也是C语言中的精华所在,本文档列举了指针使用中的常见注意事项及易混淆知识点的对比,为C语言的初学者掌握指针提供了清晰的思路。
指针详解.ppt,讲解各种指针的操作,注意事项,优缺点等等。
指针作为函数参数的注意事项.cpp
详细讲解了指针的用法和注意事项,指针是我们在学习C语言过程中的一个难点,所以就我个人的一点心得和大家分享一下
详细介绍了指针的用法及注意事项!让你不再害怕指针。
文章简单介绍了指针式万用表在使用时的注意事项
了解指针函数,及使用指针函数时的注意事项,以说明
一些指针的使用注意事项,可以帮助初学者更好的了解C语言中指针的使用方法
注:1.附件为下载链接 2.... 指针是C语言中的重点和难点,很多同学在学习C语言的时候,就是因为无法掌握指针的概念而...本课将会为大家深入讲解指针的概念、应用以及指针的注意事项,让您彻底驾驭C语言中的指针!
它基本上解决了在使用c++开发过程中不可避免的使用指针而遇到的许多问题,常见的毫无疑问是内存泄漏和内存的提前释放,还有一些关于指针内存申请而产生的异常问题等。而要想较好的使用shared_ptr来完全取代指针绝非...
详细的介绍了指针式万用表的使用方法,读数,以及注意事项
本文介绍了使用指针操作结构体时应该注意的问题。
指针式接地电阻测试仪的测试方法以及注意事项
接地电阻测试仪使用与注意事项 一、测试方法: 1、将仪表放置水平位置,检查检流计的指针是否在中心线上,否则应用零位调整器将其调整于中心线上。 2、将“倍率标度”置于最大倍数,慢慢转动发电机的摇把,同时...
常用的C 语言中的指针和内存泄漏 一些注意事项