我如何处理指针?

How I deal with pointers?

我已经被这个问题困扰了两天了。 我不知道如何处理指针,我读过一些书,但他们只是告诉他们它们是什么,而不是如何用结构或函数实现它们..

这是一个简单的例子,我动态分配了一个 char**2^n 行和 n 列。 由于它是一个指针,我如何初始化字符串使其等于“\0”?它给出了两个嵌套 for 的错误。我该怎么办?

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

void alloc_str(char **str,int n);

int main()
{
    int i,j,n;
    char **str;

    printf("n: \n");
    scanf("%d", &n);
    alloc_str(str,n);
    for(i=0;i<pow(2,n);i++)
        for(j=0;j<n;j++)
            str[i][j] = "[=10=]";
    return 0;
}

void alloc_str(char **str,int n){
    int i;
    str = malloc (pow(2,n) * sizeof(char *));
    if(str == NULL) exit(1);
    for(i=0;i<pow(2,n);i++){
        str[i] = malloc(n * sizeof (char));
        if(str[i] == NULL) exit(1);
}
 str[i][j] = "[=10=]";

这个表达式正在分配一个字符串。你应该使用单引号-

 str[i][j] = '[=11=]';

并且要初始化,您不需要循环,使用 memset 来完成,或者使用 calloc 进行分配和初始化。