首页 > 技术文章 > C基础知识(5):指针--传递指针给函数&返回指针的函数

storml 2017-11-03 15:09 原文

下面从3个代码例子分别讲述以下2个知识点:

(1) 传递指针给函数(参数类型为指针)

(2) 返回指针的函数(返回类型为指针)

 1 #include <stdio.h>
 2 
 3 // 传递指针给函数&返回指针的函数
 4 // (1) 传递一个int型指针给函数,并在函数内改变这个值
 5 void add(int *base, int num);
 6 // (2) 数组作为参数求和
 7 long sum1(int *arr, int size);
 8 long sum2(int *arr, int size);
 9 // (3) 返回一个指向char类型变量的指针(小写字母变成大写字母)
10 char * upper(char *str);
11 
12 int main() {
13     int a = 100;
14     add(&a, 10); // 110
15     printf("%d\n", a);
16     int arr[5] = { 3, 5, 6, 2, 9 };
17     long b = sum1(arr, 5); // 25
18     printf("%d\n", b);
19     long c = sum2(arr, 5); // 25
20     printf("%d\n", c);
21     char str[] = "hello!"; // HELLO!
22     char *dest;
23     dest = upper(str);
24     printf("%s\n", dest);
25     return 0;
26 }
27 
28 void add(int *base, int num) {
29     *base = *base + num;
30 }
31 long sum1(int *arr, int size) {
32     int i;
33     long tmp = 0;
34     for (i = 0; i < size; i++) {
35         tmp = tmp + *arr;
36         arr++;
37     }
38     return tmp;
39 }
40 long sum2(int *arr, int size) {
41     int i;
42     long tmp = 0;
43     for (i = 0; i < size; i++) {
44         tmp += arr[i];
45     }
46     return tmp;
47 }
48 char * upper(char *str) {
49     // 先保留最初的地址。
50     char *dest;
51     dest = str;
52     while (*str != '\0') {
53         if ('a' <= *str <= 'z') {
54             *str -= 32;
55         }
56         str++;
57     }
58     return dest;
59 }

 

推荐阅读