【编程语言 · C语言 · 函数和数组】

具有数组参数的函数

数组不能通过值传递给函数。但是,数组名是一个指针,因此仅将数组名传递给函数就是将指针传递给数组。

例如:

int add_up (int *a, int num_elements);

int main() {
  int orders[5] = {100, 220, 37, 16, 98};

  printf("Total orders is %d\n", add_up(orders, 5)); 

  return 0;
}

int add_up (int *a, int num_elements) {
  int total = 0;
  int k;

  for (k = 0; k < num_elements; k++) {
    total += a[k];
  }

  return (total);
}

输出: "Total orders is 471"

【选词填空】声明函数foo(),该函数使用指针数组参数并返回整数。

 foo(int arr);

*

&

int

float

返回数组的函数

正如可以将指向数组的指针传递给函数一样,可以返回指向数组的指针,如以下程序所示:

int * get_evens();

int main() {
  int *a;
  int k;

  a = get_evens(); /* get first 5 even numbers */
  for (k = 0; k < 5; k++)
    printf("%d\n", a[k]); 

  return 0;
}

int * get_evens() {
  static int nums[5];
  int k;
  int even = 0;

  for (k = 0; k < 5; k++) {
    nums[k] = even += 2;
  }

  return (nums);
}

请注意,声明了一个指针(而不是数组)来存储该函数返回的值。

还要注意,当从函数传递局部变量时,需要在函数中将其声明为静态变量。

请记住,a[k] 与 *(a + k)相同。

【选词填空】声明一个返回int数组的函数。

int  getArray();

$

&

*

%

【填空题】声明一个带有两个整数参数并返回浮点值(单精度)的函数。

 my_func(int a,  b);

【选词填空】定义递归打印功能,该功能可打印从n到0的数字。

void print(int n) {
  if (n < 0) ;
  printf("%d", n);
  (n - 1);
}

back

print

return

printf

【选词填空】打印数组的元素。

int arr[] = {1, 2, 3, 4, 5};
 (int x = 0; x < 5; x++) {
  printf("%d", [x]);
}

arr

if

for

x

【选词填空】声明一个指向num变量的指针,并通过该指针将其值加倍。

int num = 42;
int  *ptr = num;
ptr *= 2;

&

!

*

$

【选词填空】声明swap函数,该函数需要两个整数指针并交换它们所指向的值。

void swap( a, int* b) {
  int temp = *a;
  *a = *b;
  b = temp;
}

*int

int*

++

*

【填空题】该代码的输出是什么?

int * test() {
static int x[4];
for(int i=0;i<4;i++){
x[i] = i%2;
}
return x;
}

int main() {
int * arr = test();
printf("%d", *(arr+3));
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟程序员__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值