- 浏览: 286187 次
- 性别:
-
文章分类
最新评论
一. 指针的基本操作有:赋值(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 650把结构体保存到文件中,用fwrite()函数: fwrite ... -
关于socket编程中基本函数介绍
2012-11-03 13:57 1058源自:http://blog.sina.com.cn/s/bl ... -
C中需要注意的小问题
2012-09-27 08:59 8331.在用scanf()函数读入double型数值时要用%lf的 ... -
指针和多维数组
2011-12-26 10:03 832摘自:《C primer plus》 指针和多位数组 ... -
C中<ctype.h>库
2011-12-19 20:21 748标准库<ctype.h> 1 ... -
C中double类型数据的输入和输出
2011-12-19 10:04 12436double a; scanf(" ... -
C中printf()和scanf()函数说明
2011-12-16 19:58 1620下面是对printf()和scanf()函数的说明: ... -
C中转义序列及其含义
2011-12-15 20:27 999转义序列: 序列 ... -
C中各数据类型取值范围
2011-12-15 19:31 14161.标准头文件<limits.h>中包含了 ... -
C中常用的类型转换函数
2011-12-14 17:34 839源自:http://hi.baidu.com/hao_%BF% ... -
C语言格式化输出系统时间
2011-12-14 17:04 5958源自:http://blog.csdn.net/jiadeli ... -
C中目标代码文件,可执行文件和库
2011-12-14 10:19 1984C编程的基本策略是使用程序将源代码文件转换为可执行 ... -
vs2008下vc的库函数及头文件存放位置
2011-12-13 22:14 4624在写C/C++程序时总会在开头包含一些头文件,如:#inclu ... -
malloc()函数
2011-12-12 17:35 0待写 -
用C写的模拟掷骰子程序
2011-12-12 16:47 2370整理自:《C Primer Plus》第五版 此程序包 ... -
C中字符串的输入输出及相关函数
2011-12-27 21:59 3859//本节内容摘自对Stephen Prata的《C Prime ... -
关于*与++的优先级
2011-12-11 16:53 1759C中一元运算符*和++具有相等的优先级,但它们在结合时是从右向 ... -
C中关于数组参数的传递
2011-12-09 11:43 943编写一个对数组进行操作的函数,目的是返回数组内所用元素的和。 ... -
C中有关数组的说明
2011-12-09 11:10 817下面介绍一下关于数组的一些说明: 在数组声明时必须 ... -
C语言中对sizeof()和strlen()的说明
2011-12-09 10:01 11421.sizeof函数 sizeof函数返回表达式所占的内存空 ...
相关推荐
本文将深入探讨指针的一些注意事项,尤其是如何理解和解析复杂的指针类型。 首先,我们要明白指针的基本概念。一个指针变量存储了一个内存地址,这个地址指向了另一个变量。例如,`int *p`声明了一个指针`p`,它...
了解指针的注意事项,有助于避免编程中的常见错误,提高程序的稳定性和安全性。下面将详细阐述标题和描述中涉及的几个关键点。 首先,NULL指针。NULL通常用于表示一个无效或者未定义的指针,它的值是整数0。在C语言...
void 指针详解(用法、注意事项等等) void 指针是一种特殊的指针类型,它可以指向任何类型的对象,但是它自身的类型是未知的。因此,void 指针不能进行自增操作,因为系统不知道它指的内容的大小。 void 指针的...
本篇文章将深入探讨易语言中如何使用指针来操作字符串和数组,以及如何通过指针数组进行参数传递。 1. **指针基础**: - 在易语言中,指针是一个变量,存储的是其他变量的内存地址。指针变量需要先声明,然后通过`...
首先解释了指针的定义和声明方式,接着讲解了如何获取变量的地址、解引用指针以及常见的基本操作如赋值、修改指针指向的值和指针运算。随后讨论了多种指针类型,包括空指针、野指针、指针数组、函数指针和指针的指针...
虽然指针的使用具有一定的难度和复杂性,但是只要我们遵循正确的声明规则,理解指针类型和指针所指向类型的差异,掌握指针的基本操作,并注意使用指针时的安全性问题,我们就能充分利用指针的强大功能,编写出更加...
七、指针的注意事项 在使用指针时,需要注意一些问题,例如,指针的初始化、指针的越界访问、指针的赋值等问题。如果不正确地使用指针,可能会导致程序崩溃或出现未定义的行为。 本资源涵盖了C语言指针的基本概念...
### 软件开发培训之指针使用注意事项 #### 引言 在计算机科学领域,C和C++作为两种极为重要的编程语言,以其强大的功能、灵活性及广泛的应用场景深受开发者们的喜爱。然而,正如C语言之父丹尼斯·里奇所言:...
8. 指针的注意事项 - 指针未初始化就使用可能导致不可预知的行为,应始终确保指针有有效地址。 - 释放内存后,不要再通过已释放的指针访问内存,会导致悬挂指针。 - 避免指针越界,否则可能破坏其他数据或产生...
本文将深入讲解指针的基本概念、类型解析以及使用注意事项。 首先,我们要明白指针是一个变量,但它存储的不是普通的数值,而是一个内存地址,这个地址通常指向另一个变量。理解指针需要关注四个方面: 1. **指针...
通过对上述不同场景下字符指针的使用方法及其注意事项的探讨,我们不仅了解了指针的基本概念和用法,还掌握了如何避免常见的编程陷阱。理解这些细节对于编写高质量、健壮的程序至关重要。希望这些知识点能够帮助大家...
四、指针的注意事项 * 野指针:指针变量未初始化或已经释放的内存地址。 * 空指针:指针变量的值为NULL。 * 野指针和空指针的区别:野指针可能会导致程序崩溃,而空指针不会。 五、指针的高级应用 * 指针数组:...
一、指针的定义与基本操作 1. 定义:指针是一个变量,它存储的是另一个变量的地址。在C/C++中,我们通过类型名后面加上星号(*)来声明指针变量,如 `int *ptr;` 表示 ptr 是一个指向整型变量的指针。 2. 初始化:...
### C的指针数组和数组指针详解 #### 指针基础概念 在学习“指针数组”和“数组指针”的概念之前,我们首先需要理解什么是“指针”。...理解它们的基本概念和注意事项对于编写高质量的C程序至关重要。
本文将介绍C语言指针的基本概念、定义、初始化、运算以及与一维数组的关系。 首先,我们要理解内存地址的概念。在程序运行时,操作系统为代码和数据分配内存空间,每一个内存单元都有一个唯一的编号,称为内存地址...
如果指针没有指向任何对象,直接通过指针访问内存单元的数据将会导致未定义的行为,这是使用指针时需要注意的一个重要事项。 在函数间共享数据时,指针是一个非常有用的工具。通过将变量的地址传递给函数,函数内部...
#### 四、注意事项 1. **指针常量在定义时必须赋初值**: - 指针常量一旦定义就必须立即初始化,不能像普通指针那样在定义后单独赋值。 - 例如:`int *const ptr = &var;` 必须同时初始化。 2. **指针常量不...
本节课程主要讲述指针式万用表的结构及原理、各标度尺的读法、指针式万用表的选择和使用注意事项,及万用表的规X操作。由于内容较多,分两课时讲授。本课时讲授指针式万用表的选择和使用注意事项、万用表的规X使用...
易语言是一种国产的、以中文编程为特色的编程语言,它旨在...通过以上的讲解,我们了解了易语言中简单类函数指针的基本概念、应用及注意事项。掌握这些知识点,能够帮助我们在易语言编程中实现更加灵活和高效的设计。
六、注意事项 在使用指针时,确保不超出内存边界,避免产生未定义的行为。同时,指针运算可能导致数据溢出,因此在编写程序时应进行适当的数据类型检查和边界条件判断。 通过这个S7-300指针寻址的例子,我们可以...