`

别误用指针

阅读更多

(1)C/C++中,很容易因误用指针而犯错误,请考虑以下代码,它的目的是在链表的前面插入一个元素:

 

bool insertInFront(IntElement *head, int data){
    IntElement *newElem=new IntElement;
    if(!newElem)   return false;
    newElem->data=data;
    head=newElem;
    return ture;
}

 前面的代码是不正确的,因为它只更新了头指针的“本地拷贝”.正确的版本是传入一个头元素指针的指针:

 

bool insertInFront(IntElement **head, int data){
    IntElement *newElem=new IntElement;
    if(!newElem)   return false;
    newElem->data=data;
    *head=newElem;
    return ture;
}

  (2)char *const chrPtr,它不能改为指向内存中的另一位置,但可以用来修改它所指向的内存中的内容;

          const char *chrPtr,它可以用来指向不同的内存地址,但不能用来修改所指向位置的内容。

 

分享到:
评论

相关推荐

    c语言中详解指针.doc

    c语言中详解指针 1 指针是什么 2 指向数据对象的指针 3 指针的应用与误用 4 指针与一维数组 5 指针的应用(二) 6 高维数组名 7 变量长度数组—VLA(C99) 8 数组类型的字面量(C99) 9 指针与结构体 10 指针与函数

    C++指针应用的四大误区

    C++语言中,指针应用的误区可以分为操作空指针、内存泄露、重复释放、误用常量指针和常量指针四个方面。本文给出了可能的错误场景,并给出解决方法。

    程序员在运用C++语言写代码的时候需要注意的五个方面.docx

    误用指针可能会导致程序崩溃或安全漏洞。确保对指针的正确使用,包括避免野指针,避免指针算术等。 3.对数组的正确使用 - 数组是一种常见的数据结构,它可以用于处理大量数据。在使用数组时,需要注意数组越界、内存...

    C语言的一些误用和知识总结

    语言之所以能称之为语言,它肯定是一种工具一种相互交流相互通信相互传达之间的意图的工具,作为语言那肯定得有自己的语法,要想相互交流肯定得先学好它的语法吧(比如像表达式,函数,循环,指针)我称之为C语言的...

    通向Golang的捷径【16. 常见的陷阱和误用】

    在之前的章节中, 对一些误用给出了提示, 为了避免让用户在不同的章节中, 查找上述提示, 以下给出了 Go 语言的一些常见陷阱, 以方便查找: • 不要使用类似于 var p*a 的声明, 因为这将与指针声明和乘法操作相冲突 ...

    C语言进阶-牟海军.pdf

    第10章对C语言中的若干容易让开发者误解误用的陷阱知识点进行了剖析;第11章则对所有程序员必须掌握的几种算法进行了详细的讲解;附录经验性地总结了如何养成良好的编码习惯,这对所有开发者都尤为重要。 本书主要...

    C语言进阶 作者 Wrestle.Wu

    第10章对C语言中的若干容易让开发者误解误用的陷阱知识点进行了剖析;第11章则对所有程序员必须掌握的几种算法进行了详细的讲解;附录经验性地总结了如何养成良好的编码习惯,这对所有开发者都尤为重要。 本书主要...

    论文研究-C代码缺陷自动检测工具的研究与实现.pdf

    代码中可能依然隐含了安全、设计或是风格上的缺陷,从而导致程序运行时出现内存泄露、指针误用等现象,或导致程序代码不清晰、可读性差。为了有效查找这些缺陷,探讨了可定制缺陷规则的C 代码缺陷自动检测技术,介绍...

    window32 API大全 win32编程

    不过,由于这些函数结构复杂,所以往往难以理解,而且容易误用。 随着软件技术的不断发展,在Windows平台上出现了很多优秀的可视化编程环境,程序员可以采用"所见即所得"的编程方式来开发具有精美用户界面和功能的...

    C/C++和Java达到swap不同功能

    首先我们来看看c/c++实施swap性能  void swap ( int & a, int & b)  { ...  Java标榜当中对C/C++一个非常大的改进是:Java对程序猿屏蔽了变量地址的概念,降低指针误用。  在Java世界中函数

    用memmove函数代替strncpy函数

    不管越界的地方是全局地址、还是局部地址,查起来都是非常麻烦,原因大多时候都来自于自己对char数组类型的误用。很多同学可能都不是很清楚,在str系类的函数中,函数会在结尾的时候添加NULL指针。比如说strncpy函数...

    EffectiveCPlusPlus

    以独立语句将newed对象植入智能指针 让接口容易被正确使用,不易被误用 设计类犹如设计类型 宁以按引用传递值替换按值传递 必须返回对象时,别妄想返回其参考 将成员变量声明为private 宁以非会员,非朋友替换会员...

    基于.NET毕业论文管理系统毕设

    简单,它没有C中的指针,容易学,C#使用统一的类型系统,摒弃了C 多变的类型系统;现代,全面的内存管理已经不是您的任务了,因为C#程序在运行时提供一个垃圾收集器,负责C#程序中的内存管理;面向对象,它是C# 的...

    C语言进阶:重点、难点与疑点解析 高清(带目录)PDF

    第2-8章对预处理、选择结构和循环结构的程序设计、数组、指针、数据结构、函数和文件等知识点的核心问题和注意事项进行了讲解;第9章介绍了调试和异常处理的方法及注意事项;第10章对C语言中的若干容易让开发者误解...

    Effective C++ 中文版

    条款18:让接口容易被正确使用,不易被误用 条款19:设计class犹如设计type 条款20:宁以pass-by-reference-to-const替换Pass-by-value 条款21:必须返回对象时,别妄想返回其reference 条款22: 将成员变量声明...

    数字万用表测电容好坏步骤

    在测量前,应先将两表笔短接,转动调零电位器,使指针在0ω的位置,然后选择合适的挡位以保证测量的准确。每换一个量限,都要重新调零。另外,电阻的测量,一定要无源及无其它并联支路的情况下进行。电阻(或电流)...

    Effective C++(第三版)

    条款17:以独立语句将newed对象置入智能指针 store newed objects in smart pointers in standalone statements. 4. 设计与声明 designs and declarations 条款18:让接口容易被正确使用,不易被误用 make ...

    寒江独钓-Windows内核安全编程(高清完整版).part1

    4.5.2 修改类驱动的分发函数指针 77 4.5.3 类驱动之下的端口驱动 78 4.5.4 端口驱动和驱动之间的协作机制 79 4.5.5 找到关键的回调函数的条件 80 4.5.6 定义常数和数据结构 80 4.5.7 打开两种键盘端口驱动寻找设备 ...

    寒江独钓-Windows内核安全编程(高清完整版).part2

    4.5.2 修改类驱动的分发函数指针 77 4.5.3 类驱动之下的端口驱动 78 4.5.4 端口驱动和驱动之间的协作机制 79 4.5.5 找到关键的回调函数的条件 80 4.5.6 定义常数和数据结构 80 4.5.7 打开两种键盘端口驱动寻找设备 ...

    寒江独钓-Windows内核安全编程(高清完整版).part7

    4.5.2 修改类驱动的分发函数指针 77 4.5.3 类驱动之下的端口驱动 78 4.5.4 端口驱动和驱动之间的协作机制 79 4.5.5 找到关键的回调函数的条件 80 4.5.6 定义常数和数据结构 80 4.5.7 打开两种键盘端口驱动寻找设备 ...

Global site tag (gtag.js) - Google Analytics