数组传递参数的话,如果直接传指针过去。对数组参数的操作会改变原始变量的值。如果不想影响原始变量的话,需要在函数里面定义新的局部数组变量。赋值给局部数组变量,对局部数组变量进行操作。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int SetArray(char *array)
{
array[0]++;
array[1]++;
printf("array[0] = %d\n",array[0]);
printf("array[1] = %d\n", array[1]);
return 0;
}
int SetArrayB(char *array)
{
char arrayB[2] = {0};
memcpy(arrayB, array, 2);
arrayB[0]++;
arrayB[1]++;
printf("arrayB[0] = %d\n", array[0]);
printf("arrayB[1] = %d\n", array[1]);
return 0;
}
int PrintArray(char *array)
{
printf("array[0] = %d\n", array[0]);
printf("array[1] = %d\n", array[1]);
return 0;
}
int main()
{
char array[2] = {3, 4};
SetArrayB(array);
PrintArray(array);
SetArray(array);
PrintArray(array);
getchar();
return 0;
}
程序结果: