C语言 指针3题 十万火急!!!!在线等!!

来源:百度知道 编辑:UC知道 时间:2024/05/24 10:53:20
问题8-1
有5个整数的2个配列arrayA, arrayB,根据函数add把2个配列各对应元素相加

* main関数での配列arrayAに割り当てられるバイト数
* 配列arrayAの先头アドレス
* add関数の引数aに割り当てられるバイト数
* aの値(aが持っている値)

改造下列程序
#include <stdio.h>
void add(int[], int[], int[], int);
main(){
int arrayA[] = {2, 8, 3, 5, 1};
int arrayB[] = {12, 4, 9, 1, 3};
int arrayC[5];
int i;
add(arrayA, arrayB, arrayC, 5);
printf("result: ");
for(i=0; i<5; i++)
printf("%d ", arrayC[i]);
printf("\n");
}
void add(int a[], int b[], int c[], int n){
int i;
for(i=0; i<n; i++){
c[i] = a[i] + b[i];
}
}

结果
% ./a.out
result: 14 12 12 6 4
% ./a.out
size of arrayA: 20 bytes ←arrayA全体のサイズ
address of arrayA[0]: bffffbb0 ←arrayAの先头アドレス
size of a: 4 bytes ←aのサイズ
value of a: bffffbb0 ←aのアドレス
result: 14 12 12 6 4
*add関数の仮引数aは,実は配列ではなく4バイトの领域を
持つ変数である.

遇到我这个IT日语的哈哈哈~~帮你回答一下,答得不好请见谅。。
*在main函数里分配给二进制位数给数组arrayA。(其实就是在main中建个数组arrayA)
*数组arrayA的首地址
*对add函数的参数a进行分配二进制位(在add中定义出a)
*a的值(a的持有值)

然后你说的改造下列程序,我就理解成要改造成指针的吧。
#include <stdio.h>
void add(int *a, int *b, int *c, int n)
{
int i;
for(i=0; i<n; i++)
c[i] = a[i] + b[i];
}
main(){
int arrayA[] = {2, 8, 3, 5, 1};
int arrayB[] = {12, 4, 9, 1, 3};
int arrayC[5];
int i;
add(arrayA, arrayB, arrayC, 5);
printf("result: ");
for(i=0; i<5; i++)
printf("%d ", arrayC[i]);
printf("\n");
}
结果
% ./a.out
result: 14 12 12 6 4
% ./a.out
size of arrayA: 20 bytes ←arrayA整体的size
address of arrayA[0]: bffffbb0 ←arrayA的首地址
size of a: 4 bytes ←a的size
value of a: bffffbb0 ←a的地址
result: 14 12 12 6 4
*add函数的形参a,实际上没有在数组中为它开辟4个字节的空间,是这样的变量
*对于a,将数组arrayA的首地址(即arrayA[0]的地址)赋给a
*果要查看变量