Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C *(matrix1+;i)和*matrix1[i]之间的差异?_C - Fatal编程技术网

C *(matrix1+;i)和*matrix1[i]之间的差异?

C *(matrix1+;i)和*matrix1[i]之间的差异?,c,C,这是我的源代码,它是不言自明的,我希望在这里得到一些帮助。对于matrix1来说,一切正常,但是matrix2的循环中的代码会生成错误。*(matrix1+i)和*matrix1[i]之间有什么区别?我没有看到任何=( #包括 #包括 #包括 void示例(){ int i; 整数数量=5; char**matrix1=(char**)malloc(qty*sizeof(char));//矩阵示例(1) char**matrix2=(char**)malloc(qty*sizeof(char))

这是我的源代码,它是不言自明的,我希望在这里得到一些帮助。对于matrix1来说,一切正常,但是matrix2的循环中的代码会生成错误。
*(matrix1+i)
*matrix1[i]
之间有什么区别?我没有看到任何
=(

#包括
#包括
#包括
void示例(){
int i;
整数数量=5;
char**matrix1=(char**)malloc(qty*sizeof(char));//矩阵示例(1)
char**matrix2=(char**)malloc(qty*sizeof(char));//矩阵示例(2)
for(i=0;i
*(matrix1+i)
相当于
matrix1[i]
,类型为
char*
,而
*matrix2[i]
正在解引用指针
matrix1[i]
,类型为
char

*(matrix1+i)
是指向二维数组
char**matrix1
中索引为
i
的行的指针,具有类型
char*
。但是
*matrix2[i]
是索引为
i
的行的第一个元素,并且具有类型
char

虽然
*(matrix1+i)
matrix1[i]
相同,
*matrix2[i]
*(matrix2+i)
相同

调整您的代码,如下所示:

char **matrix1 = (char**)malloc(qty*sizeof(char));//matrix example(1)
char **matrix2 = (char**)malloc(qty*sizeof(char));//matrix example(2)
for(i=0;i<qty;i++){

    *(matrix1+i) = (char*)malloc(100*sizeof(char));
    matrix2[i] = (char*)malloc(100*sizeof(char));
    ....
}
char**matrix1=(char**)malloc(qty*sizeof(char));//矩阵示例(1)
char**matrix2=(char**)malloc(qty*sizeof(char));//矩阵示例(2)

对于(i=0;i
a[b]
*(a+b)
相同

所以
*(matrix1+i)
*matrix1[i]
之间的区别是
*
s的数量:

  • 在前者中,有一个
  • 在后者中,有两个(其中一个隐藏在
    []
    语法后面)

不要在C中使用
,alloc
&friends的结果。提示:
*matrix1[i]
**(matrix1+i)
相同。注意区别吗?
*matrix1[i]
**(matrix1+i)
相同。是的,我明白了,现在对我来说似乎很明显=)
char **matrix1 = (char**)malloc(qty*sizeof(char));//matrix example(1)
char **matrix2 = (char**)malloc(qty*sizeof(char));//matrix example(2)
for(i=0;i<qty;i++){

    *(matrix1+i) = (char*)malloc(100*sizeof(char));
    matrix2[i] = (char*)malloc(100*sizeof(char));
    ....
}