我如何处理指针?

时间:2015-11-04 17:25:25

标签: c pointers dynamic allocation

已经有两天我遇到了这个问题。 我不知道如何处理指针,我已经阅读了一些书籍,但他们只是告诉他们是什么,而不是如何用结构或功能来实现它们。

这是一个简单的示例,我使用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);
}

1 个答案:

答案 0 :(得分:1)

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

此表达式分配字符串。你应该使用单引号 -

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

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