C 我如何处理指针?

C 我如何处理指针?,c,pointers,dynamic,allocation,C,Pointers,Dynamic,Allocation,我已经两天没解决这个问题了。 我不知道如何处理指针,我读过一些书,但它们只是告诉我们指针是什么,等等,而不是如何用结构或函数实现它们 这是一个简单的例子,我动态地分配一个char**,其中包含2^n行和n列。 如何初始化字符串,使其等于“\0”,因为它是指针?它为..提供了两个嵌套的错误。。我该怎么办 #include <stdio.h> #include <stdlib.h> #include <math.h> void alloc_str(char **

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

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

#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] = "\0";
    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);
}
#包括
#包括
#包括
void alloc_str(字符**str,int n);
int main()
{
inti,j,n;
字符**str;
printf(“n:\n”);
scanf(“%d”和“&n”);
异基因str(str,n);
对于(i=0;i
此表达式正在分配字符串。应使用单引号-

 str[i][j] = '\0';

要进行初始化,不需要循环,可以使用
memset
进行初始化,或者使用
calloc
进行分配和初始化。

问题是什么?看起来只有一个问题:
“\0”
应该是
'\0'
。如果您只想初始化到
\0
,那么您可以使用
calloc
而不是
malloc
,正如我所说,
2^n=1@ameyCU,没有必要这样做。特别是考虑到它是
double
@giux,很高兴它有帮助:-)
 str[i][j] = '\0';