如何检查双指针中的空白空间(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 < 3
和 j < 4
,并且您获得对有效 show_room
对象的引用,或者
您会招致未定义的行为。
不会发生其他事情。
【讨论】:
以上是关于如何检查双指针中的空白空间(NULL)的主要内容,如果未能解决你的问题,请参考以下文章
python-leetcode26-双指针删除排序数组中的重复项