`

指针的基本操作以及关于指针的注意事项

 
阅读更多

一. 指针的基本操作有:赋值(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()来首先分配内存。

 

 

 

 

 

0
0
分享到:
评论

相关推荐

    C语言指针注意事项

    本文将深入探讨指针的一些注意事项,尤其是如何理解和解析复杂的指针类型。 首先,我们要明白指针的基本概念。一个指针变量存储了一个内存地址,这个地址指向了另一个变量。例如,`int *p`声明了一个指针`p`,它...

    指针注意事项

    了解指针的注意事项,有助于避免编程中的常见错误,提高程序的稳定性和安全性。下面将详细阐述标题和描述中涉及的几个关键点。 首先,NULL指针。NULL通常用于表示一个无效或者未定义的指针,它的值是整数0。在C语言...

    void 指针详解(用法、注意事项等等 )

    void 指针详解(用法、注意事项等等) void 指针是一种特殊的指针类型,它可以指向任何类型的对象,但是它自身的类型是未知的。因此,void 指针不能进行自增操作,因为系统不知道它指的内容的大小。 void 指针的...

    易语言指针操作字符串和数组

    本篇文章将深入探讨易语言中如何使用指针来操作字符串和数组,以及如何通过指针数组进行参数传递。 1. **指针基础**: - 在易语言中,指针是一个变量,存储的是其他变量的内存地址。指针变量需要先声明,然后通过`...

    C语言指针详解:基础知识、常见类型及注意事项

    首先解释了指针的定义和声明方式,接着讲解了如何获取变量的地址、解引用指针以及常见的基本操作如赋值、修改指针指向的值和指针运算。随后讨论了多种指针类型,包括空指针、野指针、指针数组、函数指针和指针的指针...

    C语言指针总结

    虽然指针的使用具有一定的难度和复杂性,但是只要我们遵循正确的声明规则,理解指针类型和指针所指向类型的差异,掌握指针的基本操作,并注意使用指针时的安全性问题,我们就能充分利用指针的强大功能,编写出更加...

    C语言指针练习填空和阅读程序题

    七、指针的注意事项 在使用指针时,需要注意一些问题,例如,指针的初始化、指针的越界访问、指针的赋值等问题。如果不正确地使用指针,可能会导致程序崩溃或出现未定义的行为。 本资源涵盖了C语言指针的基本概念...

    软件开发培训之指针使用注意事项

    ### 软件开发培训之指针使用注意事项 #### 引言 在计算机科学领域,C和C++作为两种极为重要的编程语言,以其强大的功能、灵活性及广泛的应用场景深受开发者们的喜爱。然而,正如C语言之父丹尼斯·里奇所言:...

    指针专题 指针大集合。。。轻松学会指针。。

    8. 指针的注意事项 - 指针未初始化就使用可能导致不可预知的行为,应始终确保指针有有效地址。 - 释放内存后,不要再通过已释放的指针访问内存,会导致悬挂指针。 - 避免指针越界,否则可能破坏其他数据或产生...

    指针总结-让你不再害怕指针

    本文将深入讲解指针的基本概念、类型解析以及使用注意事项。 首先,我们要明白指针是一个变量,但它存储的不是普通的数值,而是一个内存地址,这个地址通常指向另一个变量。理解指针需要关注四个方面: 1. **指针...

    指针学习 单纯的指针学习

    通过对上述不同场景下字符指针的使用方法及其注意事项的探讨,我们不仅了解了指针的基本概念和用法,还掌握了如何避免常见的编程陷阱。理解这些细节对于编写高质量、健壮的程序至关重要。希望这些知识点能够帮助大家...

    动画教程C语言指针动画演示,指针原来这么简单(2021.01.22).pdf

    四、指针的注意事项 * 野指针:指针变量未初始化或已经释放的内存地址。 * 空指针:指针变量的值为NULL。 * 野指针和空指针的区别:野指针可能会导致程序崩溃,而空指针不会。 五、指针的高级应用 * 指针数组:...

    指针用法总结,指针用法大全

    一、指针的定义与基本操作 1. 定义:指针是一个变量,它存储的是另一个变量的地址。在C/C++中,我们通过类型名后面加上星号(*)来声明指针变量,如 `int *ptr;` 表示 ptr 是一个指向整型变量的指针。 2. 初始化:...

    C的指针数组和数组指针

    ### C的指针数组和数组指针详解 #### 指针基础概念 在学习“指针数组”和“数组指针”的概念之前,我们首先需要理解什么是“指针”。...理解它们的基本概念和注意事项对于编写高质量的C程序至关重要。

    c语言指针学习笔记

    本文将介绍C语言指针的基本概念、定义、初始化、运算以及与一维数组的关系。 首先,我们要理解内存地址的概念。在程序运行时,操作系统为代码和数据分配内存空间,每一个内存单元都有一个唯一的编号,称为内存地址...

    C语言指针基本语法及用法.pdf

    如果指针没有指向任何对象,直接通过指针访问内存单元的数据将会导致未定义的行为,这是使用指针时需要注意的一个重要事项。 在函数间共享数据时,指针是一个非常有用的工具。通过将变量的地址传递给函数,函数内部...

    C_C++指针常量和常量指针详解

    #### 四、注意事项 1. **指针常量在定义时必须赋初值**: - 指针常量一旦定义就必须立即初始化,不能像普通指针那样在定义后单独赋值。 - 例如:`int *const ptr = &var;` 必须同时初始化。 2. **指针常量不...

    正确使用指针式万用表.doc

    本节课程主要讲述指针式万用表的结构及原理、各标度尺的读法、指针式万用表的选择和使用注意事项,及万用表的规X操作。由于内容较多,分两课时讲授。本课时讲授指针式万用表的选择和使用注意事项、万用表的规X使用...

    易语言简单类函数指针

    易语言是一种国产的、以中文编程为特色的编程语言,它旨在...通过以上的讲解,我们了解了易语言中简单类函数指针的基本概念、应用及注意事项。掌握这些知识点,能够帮助我们在易语言编程中实现更加灵活和高效的设计。

    S7-300指针寻址例子

    六、注意事项 在使用指针时,确保不超出内存边界,避免产生未定义的行为。同时,指针运算可能导致数据溢出,因此在编写程序时应进行适当的数据类型检查和边界条件判断。 通过这个S7-300指针寻址的例子,我们可以...

Global site tag (gtag.js) - Google Analytics