学点C语言(36):函数 – 数组参数
当前位置:以往代写 > C/C++ 教程 >学点C语言(36):函数 – 数组参数
2019-06-13

学点C语言(36):函数 – 数组参数

学点C语言(36):函数 – 数组参数

副标题#e#

数组参数属于指针参数.

指针参数即时传址参数(或叫引用参数), 假如想在函数中修改参数的值, 这是独一的途径.

假如把数组看成参数, 不管你愿意与否, 它就是指针, 指向第一个值的指针.

1. 数组参数就是指向第一个元素的指针:

#include <stdio.h>

void getArr(int p[], int si);

int main(void)
{
  int ns[] = {1,2,3,4,5};

  getArr(ns, sizeof(ns)/sizeof(ns[0]));

  getchar();
  return 0;
}

void getArr(int p[], int si) {
  int i;
  for (i = 0; i < si; i++) {
    printf("%d\n", p[i]);
  }
}

2. 爽性直接声明为指针:

#include <stdio.h>

void getArr(int *p, int si);

int main(void)
{
  int ns[] = {1,2,3,4,5};

  getArr(ns, sizeof(ns)/sizeof(ns[0]));

  getchar();
  return 0;
}

void getArr(int *p, int si) {
  int i;
  for (i = 0; i < si; i++) {
    printf("%d\n", p[i]);
  }
}

3. 纵然你在形参中指定维数也不起浸染:

#include <stdio.h>

void getArr(int p[2], int si);

int main(void)
{
  int ns[] = {1,2,3,4,5};

  getArr(ns, sizeof(ns)/sizeof(ns[0]));

  getchar();
  return 0;
}

void getArr(int p[2], int si) {
  int i;
  for (i = 0; i < si; i++) {
    printf("%d\n", p[i]);
  }
}


#p#副标题#e#

4. 既然是指针, 其值就有被修改的大概:

#include <stdio.h>

void getArr(int p[], int si);

int main(void)
{
  int ns[] = {1,2,3,4,5};
  size_t i;

  getArr(ns, sizeof(ns)/sizeof(ns[0]));

  for (i = 0; i < sizeof(ns)/sizeof(ns[0]); i++) {
    printf("%d\n", *(ns+i));
  }

  getchar();
  return 0;
}

void getArr(int p[], int si) {
  int i;
  for (i = 0; i < si; i++) {
    p[i]++;
  }
}

5. 假如是字符数组, 它本身能判定数组尾界:

#include <stdio.h>

void getArr(char p[]);

int main(void)
{
  char ns[] = "ABCDEFG";

  getArr(ns);

  getchar();
  return 0;
}

void getArr(char p[]) {
  int i;
  for (i = 0; p[i]; i++) {
    printf("%c: %d\n", p[i], p[i]);
  }
}

返回“学点C语言 – 目次”

    关键字:

在线提交作业