【发布时间】:2016-02-21 21:03:07
【问题描述】:
我了解什么是分段错误,但我不明白为什么会这样。
所以下面我定义了一个函数,它接受一个 char 指针并检查它是否是某个字符,然后如果它是指定的字符则替换它。
int swapPercent(char * loc){
if (strcmp(loc, "%") == 0){
*loc = '#';
}
}
那么下面是函数指针函数,将函数应用于矩阵中的每个元素:
int execOnMatrix(char (*fptr)(char)){
int a;
int b;
for (a = 0; a < 10; a = a +1){
for (b = 0; b < 10; b=b+1){
(*fptr)(matrixOne[a][b]);
}
}
}
最后,这里是我调用函数 execOnMatrix 的地方。这是在一个单独的函数中,我在其中迭代矩阵(它是一个基于玩家运动的游戏):
if (matrixOne[a][b] == '+'){
execOnMatrix(swapPercent());
}
编辑: 矩阵如下:
char map[10][10];
上面代码中的“a”和“b”来自一个访问矩阵中每个元素的for循环。
感谢您的帮助!
【问题讨论】:
-
你在哪里以及如何调用它时遇到分段错误?
-
寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建最小、完整和可验证的示例。
-
上下文不够,但您的意思是
if (*loc == '%')吗?
标签: c pointers matrix segmentation-fault function-pointers