如何检查双指针中的空白空间(NULL)

Posted

技术标签:

【中文标题】如何检查双指针中的空白空间(NULL)【英文标题】:How to check an empty space (NULL) in double pointers 【发布时间】:2011-04-06 13:58:05 【问题描述】:

我正在尝试使用“if”条件来检查对象的位置是否为空。我为此使用双指针。请看下面的代码:

void show_room :: buy_car(int clmn, int row)

    int row = row;
    int clmn = clmn;
    string car_door_col;
    string temp1;
    float temp2;
    int temp3;
    int n=0, i;
    this->HBM = new show_room*[3];

    for(int i=0; i<3; i++)
                   
        this->HBM[i] = new show_room[4];
    

    for(int j=0; j<row; j++)
    
        if(this->HBM[clmn][row] == NULL)
        
        
    

在这个循环中:

for(int j=0; j<row; j++)

    if(this->HBM[clmn][row] == NULL)
    

    

我正在尝试检查 [clmn][row] 处是否有对象,我为此使用 NULL,这是错误的。我应该如何实现这一点。请在这方面帮助我。

【问题讨论】:

你为什么要这样做:int row = row; int clmn = clmn; @meagar....我知道这是错误的.....请忽略它.. 仅供参考,在您的检查中,您可能希望检查 j 而不是 row,因为 row 不会改变,您最终每次都会检查同一个对象。 【参考方案1】:

假设您已经将 HBM 的元素初始化为 0,并且您记得在删除它们指向的对象后将它们重置为 0,您可以这样做:

if(this->HBM[clmn][row]) 
    // ... 

【讨论】:

请考虑这种情况...... HBM[0][2] 有东西,而 HBM[0][1] 是空的。现在我正在尝试实现一些东西来检查 HBM[0][1] 是否为空。请帮忙。 @Spoilt 那么到底是什么问题呢?完全按照我的建议,循环 HBM 并使用 if 测试每个元素。这会告诉你元素是否为空。 那么支票在哪里?你写的Wat会检查NULL条件吗?对不起,我很笨,但仍然请帮助.. @Spoilt if 支票。这就是if 语句的含义。 if 的主体仅在存在对象 HBM[clmn][row] 时才会执行。否则,条件评估为 false 并跳过 if 的正文。【参考方案2】:

问题在于new show_room[4] 没有创建四个指向 show_rooms 的指针,而是连续创建了四个 show_rooms。

【讨论】:

【参考方案3】:

按照您的编写方式,您只是在构造一个二维数组show_room[3][4](带有动态存储)。调用new 意味着每个对象都被构造出来,所以没有“缺失值”或“空格”。

当您说HBM[i][j] 时,可能会发生以下两种情况之一:

i &lt; 3j &lt; 4,并且您获得对有效 show_room 对象的引用,或者 您会招致未定义的行为。

不会发生其他事情。

【讨论】:

以上是关于如何检查双指针中的空白空间(NULL)的主要内容,如果未能解决你的问题,请参考以下文章

leetcode-双指针遍历

链表中的双指针

python-leetcode26-双指针删除排序数组中的重复项

常用算法-双指针系列

LeetCode 80. 删除有序数组中的重复项 II 双指针

双指针 — 20180928 - 20181012