#include <stdlib.h> #include <stdio.h> #include <string.h> //二維整型數組打印顯示 void printarr2d(int (*a)[3],int row,int col) { int i,j; for(i=0; i<row; i++) { for(j=0; j<col; j++) { printf("%d ", a[i][j]); } printf("\n"); } }
main()
{
int i,j;
int a[2][3]={{1,2,3},{4,5,6}};
int b[2][3];
//二維數組復制(第三個參數為數組總的字節數)
memcpy(b,a, 2*3*sizeof(int) );//memcpy(&b[0][0],&a[0][0],24);
//二維數組打印顯示 (before zero)
printarr2d(b,2,3);
//二維數組清零
memset(b,0, 2*3*sizeof(int) );
//二維數組打印顯示 (after zero)
printarr2d(b,2,3);
system("pause");
return 0;
}
c語言中如何復制一個二維數組的所有元素的值到另外一個二維數 使用for循環固然可以,但是總感覺非常麻煩 #include"stdio.h" int main(void) { int i,j; int a[2][5]={{1,2,3},{4,5,6,8}}; int b[2][5]; for(i=0;i<2;i++) { for(j=0;j<5;j++) { b[i][j]=a[i][j]; } } printf("%d",b[1][2]); } (1)
mencpy的原型是void *memcpy(void *dest, const void *src, size_t n); 1 為什么*memcpy這里前面有個*號?? 2 為什么函數的參數里面void * src 前面有個修飾符const 答: 1: memcpy 返回值為void * 2:加 const 變為常量指針 防止在memcpy中對src指向的內容進行修改,函數的健壯性考慮
自己做的時候,就在想,如何不適用二重for循環的辦法,對二維數組進行復制操作
看了下CSDN 的bbs結果真的有,非常感謝
注:
1)使用memcpy函數,memset函數都要引入庫文件 #include <string.h>
2)本來想對這個復制函數封裝的,后來感覺沒必要,直接使用,只不過要注意第三個參數為:數組整體內存所占bit數,要小心
(2)
memset(b,0, 2*3*sizeof(int) );
第一個值是數組地址,第二個是你要把數組中的值賦為多少,第三個是你要賦多少個元素。
總結版:
二維數組復制:
//二維數組復制(第三個參數為數組總的字節數) memcpy(b,a, 2*3*sizeof(int) );//memcpy(&b[0][0],&a[0][0],24);
二維數組清零:
//二維數組清零 memset(b,0, 2*3*sizeof(int) );