B.L*_*.Li 1 c arrays pointers prototype
这是我的计划:
#include<stdio.h>
#define COL 3;
void copy_row(int arr1[][COL], int rows, int arr2[], int r);
void copy_row(int arr1[][COL], int rows, int arr2[], int r){
int i;
if(r >= rows || r < 0)
return;
for(i = 0; i < COL; i++){
arr1[r][i] = &arr2[i];
}
}
int main(void){
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我尝试使用gcc编译它时,它会在"之前"中显示"error:expected']';' 令牌"在第4行和第6行.
另外,参考for循环,将"arr1 [r] [i] = arr2 [i];" 做与"arr1 [r] [i] =&arr2 [i];"相同的事情?哪个(更)正确?
宏COL被扩展为3;,因此在声明和定义中如下所示:
int arr1[][3;]
Run Code Online (Sandbox Code Playgroud)
从你的#define线上删除分号.
另外,参考for-loop,会
arr1[r][i] = arr2[i];做同样的事情arr1[r][i] = &arr2[i];吗?
不,第一个是正确的.的左值 arr1[r][i]是指一个整数.的右值 arr2[i]也是整数.
如果你通过take引用它,&arr2[i]那么它的类型就变成了int*,并且是一个指向元素的指针i,你试着将它赋给一个类型的左值int.如果您尝试这样做,您的编译器应该警告您.