C *(matrix1+;i)和*matrix1[i]之间的差异?
这是我的源代码,它是不言自明的,我希望在这里得到一些帮助。对于matrix1来说,一切正常,但是matrix2的循环中的代码会生成错误。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+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;ia[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));
....
}