我如何处理指针?
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
进行分配和初始化。
我已经被这个问题困扰了两天了。 我不知道如何处理指针,我读过一些书,但他们只是告诉他们它们是什么,而不是如何用结构或函数实现它们..
这是一个简单的例子,我动态分配了一个 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
进行分配和初始化。