请问一下这里有什么问题?想拷贝一个二维数组
问题描述:
#include<stdio.h>
#include<conio.h>
void main(){
void copy(double (*x)[4],double (*y)[4]);
double er[4][4]={<!-- -->{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},er2[4][4];
void copy (er,er2);
}
void copy(double (*x)[4],double (*y)[4]){
for (int i = 0; i < 4; i++)
{
for (int k = 0; k < 4; k++)
{
*((*y+i)+k)=*((*x+i)+k);
}
}
}
er不是可以表示一个指向包含四个整型数组元素的指针吗?
答
第六行调用函数干嘛要写返回值void?
*y + i的意思是y[0] + i结果是一个数值,你应该写成*(y+i)
答
指针乱用,*x+i与*(x+i)结果是不同的,后者是将指针指向下一行起始地址
*(*(y+i)+k)=*(*(x+i)+k);
而且用
y[i][k]=x[i][k];
不是更明了吗