`

判断pointer是否初始化

    博客分类:
  • C++
 
阅读更多

 把pointer定义未NULL用来以后判断是否初始化

 

#include <stdio.h>
#include <stdlib.h>

// Some struct
typedef struct{
void *ptr;
int x;
int *y;
}Display;

void CloseDisplay(Display **dpy)
{
*dpy=NULL; // Compiler does not allow that
dpy = NULL; // Correct !
}

/.../
if ( dpy == NULL)

 注意代码中

*dpy=NULL; 

是错误的,因为*dpy代表的是数据,而不是指针。所以不能用它给指针赋值。

分享到:
评论

相关推荐

    c++ vector用法精讲(很精辟

    在本文中,我们将深入探讨`std::vector`的用法,包括其定义、初始化、值初始化以及各种操作。 首先,`std::vector`是一个模板类,它的实例可以存储任意类型的元素。例如,`vector&lt;int&gt;`表示一个存储整数的`std::...

    最全Vector用法总结.pdf

    4. `empty()`:判断容器是否为空。 5. `operator[](n)`:返回下标为n的元素。 6. `insert(pointer, number, content)`:在pointer指向的位置插入number个content。 7. `pop_back()`:删除容器末尾的元素。 8. `erase...

    C++ vector

    1. 如果没有指定元素初始化式,标准库自行提供一个初始化值进行值初始化。 2. 如果保存的式含有构造函数的类类型的元素,标准库使用该类型的构造函数初始化。 3. 如果保存的式没有构造函数的类类型的元素,标准库...

    common error analysis memory leakage & invalid pointer

    这样可以确保在后续的逻辑判断中不会因为未初始化而导致意外的结果。 ### 当使用指针时,检查是否有效! 在使用指针之前,必须先确认它是否已经被正确地初始化并且指向有效的内存地址。可以通过以下方式来实现: ...

    pointer-sub.zip_sub

    3. **空指针与非空指针**:`NULL`或`nullptr`(C++11引入)可以与任何类型的指针进行比较,这用于检查指针是否已初始化。 在"8—7—4 指针的比较运算.cpp"这个文件中,可能包含了示例代码,展示了如何比较不同情况...

    vector介绍和用法

    在未指定元素初始化式的情况下,`vector`会使用默认构造函数来初始化每个元素。如果元素类型具有构造函数,那么会调用相应的构造函数进行初始化。对于没有构造函数的类型,会创建一个具有初始值的对象来进行值初始化...

    内存编程教学

    这种错误通常发生在没有初始化内存的情况下就对其进行访问,原因可能是忽略了初始化步骤或错误地认为内存默认初始化为零。实际上,全局和静态变量在未手动初始化时会被编译器初始化为零,但栈和堆内存不会被初始化。...

    param_ctor_iterator.rar_Modified

    在编程中,判断两个参数是否相等是一项基本操作,这里可能讲解了如何正确比较OpenMAX AL参数,确保配置的一致性。 6. **param_types.pass.c**:这个文件可能涵盖了OpenMAX AL中不同类型的参数,包括它们的定义、...

    练习函数的指针操作,九九乘法表,,判断闰年,n阶乘

    "判断闰年"则可能需要编写一个检查年份是否为闰年的函数,并通过函数指针调用。"n阶乘"可能需要一个计算阶乘的函数,可以使用函数指针传递不同的n值来计算。 这些知识点是C语言中函数指针的基本用法,通过`function...

    os_cpu_a.rar_OS_CPU_A_V2

    本文将聚焦于"OS_CPU_A_V2",即EFM32 uc/OS-II v2.86版本中的内核文件更新,探讨其中对PSP(Process Stack Pointer)初始化判断方法的改进,以解决内存分配可能导致的PSP错误问题。 uc/OS-II是专为微控制器设计的一...

    编译原理:C语言文法

    声明(Declaration)可以是初始化声明器(init_declarator)或初始化声明器列表,每个初始化声明器由声明符和可选的初始值设定项(initializer)。初始值设定项可以是赋值表达式,也可以是初始化列表。语句列表则由...

    C语言中的空指针、空指针常量、NULL &amp; 0.docx

    在C语言中,空指针、空指针常量、NULL和0是编程时经常会遇到的概念,它们在处理指针时扮演着至关重要的角色。...在实际编程中,确保正确地使用空指针常量来初始化或检查指针,避免出现未定义的行为或内存错误。

    C语言指针第讲PPT课件.pptx

    指针还有一项重要特性是,未初始化的指针可能会指向不确定的内存位置,直接使用这样的指针可能导致未定义的行为,因此必须在使用前进行初始化。另外,`NULL`或`0`常用于表示空指针,可以用来检查指针是否已指向有效...

    fifo.rar_fifo_同步fifo

    1. **初始化**:设置初始的读写指针,可能还需要初始化其他状态变量。 2. **写操作**:在写操作中,首先要检查FIFO是否已满。如果未满,将数据写入存储单元,并更新写指针。同时,可能需要更新空满标志或计数器。 ...

    C语言中的空指针、空指针常量、NULL &amp; 0.pdf

    在C语言中,空指针、空指针常量、NULL和0是极其重要的概念,它们在程序设计中起到关键作用,确保了对未初始化或无有效数据的指针进行安全处理。 首先,空指针常量(null pointer constant)是指能够被转化为指针...

    GCC的51项扩充(编译器扩展语法标准)

    在使用GCC时,可以通过`-pedantic`选项来检查是否使用了这些扩展,并且在预处理阶段通过检查`__GNUC__`宏来判断当前编译器是否支持这些特性。以下是一些主要的GCC C语言扩展的详细介绍: 1. **Statement Exprs**:...

    我整理的微软的面试题2

    - **初始化列表** 在创建对象时调用构造函数,可以初始化const引用等。 - **赋值** 发生在对象创建后,可能引发不必要的复制或转换。 #### 4. C++安全性与类型转换 C++提供了多种类型转换方式,如 `static_cast`, `...

    对象由生到死的一些过程.doc

    3. **初始化**:`invokespecial`指令执行对象的构造函数,对实例变量进行初始化。这包括设置默认值或用户定义的初始化值。 4. **引用存储**:`astore`指令将栈顶的对象引用存储到局部变量表中,使得我们可以访问这...

    (完整word版)C++术语表.doc

    22. array initialize list(数组初始化值列表):数组初始化值列表是一种数组初始化方式,用于初始化数组的值。 23. array of pointers(指针数组):指针数组是一种数组,元素为指针类型的变量。 24. array of ...

Global site tag (gtag.js) - Google Analytics