手记

【养成记】嵌入式挑战第13天,第二周第四讲-指针函数

【养成记】嵌入式挑战第13天,第二周第四讲-指针函数

课程章节

物联网/嵌入式工程师 第二周第四讲 1-14 指针函数

课程内容

对C语言中的指针函数做了介绍

学习笔记

1. 概述

指针函数

  • 本质:是一个函数,只不过返回值是一个地址。

思考:如何定义一个指针函数?
返回值类型 * 函数名称 (类型1 参数1,类型2 参数2 ,…);

2. 示例代码

//
// Created by au on 2022/9/17.
//
#include <stdio.h>
#include <string.h>


char *design_array(int *len) {
    static char a[100] = {0};
//    len = sizeof(a) / sizeof(a[0]);
    len = strlen(a);
    return a;
}

char *input_array(char *array) {
    printf("请输入任意的字符串:");
    gets(array);
    return array;
}

void output_array(char *array) {
    printf("字符串中的每一个字符依次为:");
    // todo 这里的计算结果总是 8/1
//    int len = sizeof(array) / sizeof(array[0]);
    int len = strlen(array);
    for (int i = 0; i < len; ++i) {
        printf("%c ", array[i]);
    }
    printf("\n");
}

int count_space(char *array) {
    int sum_space = 0;
//    int len = sizeof(array) / sizeof(array[0]);
    int len = strlen(array);
    for (int i = 0; i < len; ++i) {
        if (array[i] == ' ') {
            sum_space += 1;
        }
    }
    return sum_space;
}

/**
 * (1)要求大家是设计⼀个 design_array()函数,自己定义返回值和参数。 要求 desigan_array()函数中定义一个,static char a[100] = {0};,然后 把数组首地址和长度返回。
(2)设计一个 input_array() 函数,自定义返回和参数,要求用户从键盘 输入任意的字符串,存放到a数组中
(3)设计一个 output_array() 函数,要求输出a数组中的每一个字符, 以空格作为区分. w u h a n s h a n g h a i
(4)设计一个 count_space() 函数,自定义返回和参数,要求用户统计数组a中用户 输入的空格个数,并返回值给main函数。
(5)main()函数调用以上函数,并输出空格个数。
 * @return
 */
int main() {

    int len = 3;
    char *string = design_array(&len);
//    printf("该数组的长度为:%d\n", len);

    string = input_array(string);

    output_array(string);

    int sum_space = count_space(string);
    printf("字符串中空格的个数为:%d", sum_space);
}

运行结果

请输入任意的字符串:d df df dfg er
字符串中的每一个字符依次为:d   d f   d f   d f g   e r
字符串中空格的个数为:4

请输入任意的字符串:sdf  sdfl   dsklfj  er
字符串中的每一个字符依次为:s d f     s d f l       d s k l f j     e r
字符串中空格的个数为:7

3. 代码示例

3.1. 编译警告,且返回值不是预期,原因何在?

3.2. 对函数中的局部变量添加static后

课程评价

C语言中的基础库中内置了许多常用的函数,这节了解几个常用的String库中的API。

1人推荐
随时随地看视频
慕课网APP