【发布时间】:2020-07-27 05:50:43
【问题描述】:
这是在二维数组中搜索子字符串的东西 int search_left2right(char * matrix, char * word) { 诠释我;
for (i = 0; i != ROW*COLUMN; ++i) {
int j = i;
char * w = word;
while (*w == matrix[j]) {
if (!*++w)
return i * 1000 + j;
if (++j == ROW*COLUMN)
j = 0;
}
}
return -1;
}
谁能解释一下这两行代码的作用?特别是 if 语句,任何人都可以让这个代码不使用任何指针,当我实现它时他们会弄乱我的代码。我想让char * w = word; 这行是不必要的。像while(word[something]=matrix[j] 这样的东西,但我做不到工作
while (*w == matrix[j]) {
if (!*++w)
这就是它正在做的事情
Enter the string to be searched in the puzzle:
SHOUT
position in the puzzle: 12
PUZZLE(MATRIX)
X T Z M Q Y K C E C F H -->0 1 2 3 4 5 6 7 8 9 10 11
*S H O U T* E X O E A P I -->12 13 14 ------------23
X G T L Q B E L T N F K
A I R I D Z A L L I O D
M E I E T Y S E H R T I
A W B R N E T C W O H X
N O U I R U Z T S C C T
U D T P E C J I E H R U
A L E M C S Y O N I U R
L V *K E R E M* N I P H E
E A N B U R E J O N C Y
A W I I I J N J R U Y F
D W T N T H E N P J Y T
E Q L Z D I L E M M A B
R C I T E N G A M T P C
returns the index of the words first element
【问题讨论】:
-
你知道指针解引用是如何工作的吗?理解解引用,你就会明白这段代码是如何工作的。
-
我有点做,但我要求没有它的方法,因为我必须向不知道指针是什么的人解释这一点
-
不可能。首先教他们指针是如何工作的。
-
不管怎样,
w[0]等价于*w,w = w + 1; w[0]等价于*++w -
矩阵不应该是char*数组还是char**?