因为函数原型是void f(int, int *);
成都创新互联-专业网站定制、快速模板网站建设、高性价比源汇网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式源汇网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖源汇地区。费用合理售后完善,10多年实体公司更值得信赖。
第一个参数是int型,第二个函数是指向int的指针
所以只有D选项f(*p, a);正确
一、
假设函数 void f(int b[])
(1)有定义int a[15],调用f(a),传递的是首地址。
(2)如果是调用f(a[1])相当于调用f(a+1),传递的还是地址,不是整个数组。
二、和一中说的一样,依然是地址。
三、不是,是第二行的地址,不是第二列,C和fortran不一样,是以行为主序的。例如:
int arr[3][4];
int (*a)[4] = arr;
a指向arr[0],第一行行地址
a+1指向arr[1],第二行行地址
a是全局变量,所以每调用一次函数这个值就被+1。
s[d] = s[a] 就是赋值语句,相当于改变主函数中的t数组。
总共调用了4次fun函数。
1。s[4] = s[0],此时t数组为{1,3,5,7,1}
2。s[3] = s[1] ,此时t数组为{1,3,5,3,1}
后面的你类似再推导就行了,最后的输出是:13531。
不过这个程序也有点问题,就是k并没有定义。