小编RJo*_*nes的帖子

为什么这些循环奇怪地增加?

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

    int main(){

        int rows, col, i, j;
        char **mazeArrP;

        scanf("%d %d", &rows, &col);

        mazeArrP = (char **) malloc(rows*sizeof(char));

        for(i = 0; i<rows; i++){

            printf("i = %d\n", i);
            mazeArrP[i] = (char *) malloc(col*sizeof(char));

            for(j = 0; j<col; j++){

                printf("j = %d\n", j);
                scanf("%c", &mazeArrP[i][j]);
            }
        }

        return 0;
    }
Run Code Online (Sandbox Code Playgroud)

我使用打印来识别我当前在循环中的位置.我正在尝试创建一个简单的2D字符数组,但我的循环行为奇怪.这是我第一次尝试使用双指针来创建2D数组,因此非常感谢该区域的任何帮助.它似乎是0,0然后是0,1然后要求扫描,然后跳到i = 1 j = 0,依此类推.我错过了一些基本的东西吗?

c loops multidimensional-array

3
推荐指数
1
解决办法
91
查看次数

在C中终止递归函数

int postOrder(struct node* root, char organ[], char bt[], int* val){

    if(root != NULL) {
        postOrder(root->left, organ, bt, val);
        postOrder(root->right, organ, bt, val);
        if(strcmp(root->organ.organname, organ) == 0){
            if(strcmp(root->organ.bloodtype, bt) == 0){
               if(val == 0){
                printf("%s\n", root->organ.name);
                val = 1;
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我正试图在第一次打印后立即终止此递归功能.我的想法最初是传入十进制指针'val'并在我想终止函数时将其设置为1.思考过程是它会改变函数之外的值,所以以前的所有调用都会有更新的指针,但我不认为它在这个设置中是如何工作的.

此函数通过二叉树搜索Post Orderly.

c recursion binary-tree

0
推荐指数
1
解决办法
177
查看次数