指针 数组问题
程序代码:
# include <stdio.h> void copy_arr(double ar_s[], double ar_t[], int size); void copy_ptr(double pt_s[], double pt_t[], int size); void print(double n[], int size); int main (void) { double source[5] = {1.1, 2.2, 3.3, 4.4, 5.5}; double target1[5]; double target2[5]; copy_arr(source, target1, 5); copy_ptr(source, target2, 5); print(target1, 5); print(target2, 5 ); return 0; } void copy_arr(double ar_s[], double ar_t[], int size) { int i; for (i=0; i<size; ++i) ar_t[i] = ar_s[i]; //为什么只要这一句,target1就得到赋值!!! } void copy_ptr(double pt_s[], double pt_t[], int size) { double *ptr; int i; for (i=0,ptr=pt_s; i<size; ++i, ++ptr) pt_t[i] = *ptr; } void print(double n[], int size) { int i; for (i=0; i<size; ++i) printf ("%5.1lf", n[i]); printf ("\n"); }这是一道c primer plus 5th 的一道题,第十章。
为什么copy_arr函数能够给target1赋值,不是说函数赋值要return的吗?还是因为,发送的是数组地址。