C语言那些事之指针操作

一个函数如果要返回一个数组,这个数组最好不要定义成局部变量,因为局部变量传过去后,该地址的内容有可能会发生变化,所以只能定义全局变量数组作为返回参数。

定义的指针变量,该变量只能被调用或传入地址,不能进行内容操作,否则会奔溃,在stm32中会跑入错误中断中。

贴一个最近写的字符串操作的函数:

.c文件

/**
 * Created by QiPing on 2018/7/20 
 * Describe:
 *        字符串操作
 * Param:
 */
#include "myString.h"
char strBuffer[50];
/**
 * --------
 * @since 2018-7-17
 * @Param1 str-->传入字符串指针
 * @Param2 startIndex-->开始截取字符串段的开始位置,从0开始数
 * @Param3
 * @Addition
 *        截取的字符串段内容包含startIndex字符串结束的所有字符
 *        字符串结束符=\0
 */
char *subString(char *str, size_t startIndex){
    size_t length,i;
    length = strlen((char *)str);
    memset(strBuffer,0,50);
    for(i=startIndex; i < length; i++){
        strBuffer[i-startIndex] = str[i];
    } 
    return strBuffer;
}
/**
 * --------
 * @since 2018-7-17
 * @Param1 str-->传入字符串指针
 * @Param2 startIndex-->开始截取字符串段的开始位置,从0开始数
 * @Param3
 * @Addition
 *        截取的字符串段内容包含startIndex(含该字符)到endIndex(含该字符)所有字符

 */
char *subString2(char *str, size_t startIndex, size_t endIndex){
    size_t i;
    memset(strBuffer,0,50);
    for(i=startIndex; i < endIndex; i++){
        strBuffer[i-startIndex] = str[i];
    }
    return strBuffer;
}

.h文件

#include <stdio.h>    //包含size_t
#include <string.h> //包含memset()

char *subString(char *str, size_t startIndex);
char *subString2(char *str, size_t startIndex, size_t endIndex);

猜你喜欢

转载自blog.csdn.net/linqiping233/article/details/81133254