指针的学习(3)指针作为函数的参数的输入和输出的参数的特性
来源:互联网 发布:mac如何删除管理员账户 编辑:程序博客网 时间:2024/06/06 01:27
一,指针作为函数的输入和输出特性
输入特性的定义:由被调用函数的分配的内存
输出特性的定义:由调用函数分配内存
二,指针的输入特性的使用
主函数分配内存
把内存的首地址转过去
/*************************************************************************【题目】现有一个字符串"eeddccbbaa",要求写一个函数(接口),实现字符串的反转。函数接口定义如下:接口1:实现字符串反转,在函数内部申请空间,存储反转后的字符串char* rev_str(const char *src) ;//字符串反转参数:src 为传入要反转的字符串返回值:成功,返回反转后的字符串,失败返回NULL。void free_mem(char * str); //释放rev_str函数中申请的内存 > File Name: 一级指针接口.c > Author: songli > QQ: 2734030745 > Mail: 15850774503@163.com > CSDN: http://my.csdn.net/Poisx > github: https://github.com/chensongpoixs > Created Time: 2017/8/26 星期六 ************************************************************************/#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <errno.h>//接口1:实现字符串反转,在函数内部申请空间,存储反转后的字符串char* rev_str(const char *src/*in*/); //字符串反转//参数:src 为传入要反转的字符串//返回值:成功,返回反转后的字符串,失败返回NULL。void free_mem(char * str/*out*/); //释放rev_str函数中申请的内存int main(int argc, char *argv[]){ char str[] = "eeddccbbaa"; char *p = rev_str(str); printf("%s\n", p); free_mem(p); system("pause"); return EXIT_SUCCESS;}//接口1:实现字符串反转,在函数内部申请空间,存储反转后的字符串char* rev_str(const char *src /*in*/) //字符串反转//参数:src 为传入要反转的字符串{ char * _src = src; int temp = 0; while (*_src) { temp++; _src++; } printf("%d\n", temp); //开辟内存 \0 char *p = (char *)calloc(sizeof(char), 11); char * _tsrc = src; int i = 0; //字符串倒置 while (*_tsrc) { *(p + i) = *(src + temp - 1); i++; _tsrc++; temp--; } *(p + 10) = '\0'; printf("%s\n", p); return p;}//返回值:成功,返回反转后的字符串,失败返回NULL。void free_mem(char * str /*out*/) //释放rev_str函数中申请的内存{ if (str != NULL) free(str); str = NULL;}
三,指针的输出特性
平级的指针使用
char * rev_str(char *dest,const char *src);参数:dest 为存储反转字符串的内存地址Src 为传入要反转的字符串返回值:成功,返回反转后的字符串,失败返回NULL。 char str[] = "eeddccbbaa"; //开辟内存 \0 char * dest = (char *)calloc(sizeof(char), 11); //我转入是一个地址 不是&dest而是dest的 dest就是地址 dest = rev_str(dest, str); printf("%s\n", dest);
二级指针的使用
主要步骤
char * rev_str(char **dest,const char * src); //字符串反转void free_mem(char **str); //释放rev_str函数中申请的内存 char str[] = "eeddccbbaa"; char * dest = NULL; //二级指针要转入地址 char * p = rev_str(&dest, str); printf("%s\n", p); free_mem(&dest);
这是GitHub的地址源码
阅读全文
0 0
- 指针的学习(3)指针作为函数的参数的输入和输出的参数的特性
- 作为函数参数的指针
- 指针作为函数的参数
- 作为函数参数的指针
- 指针作为函数的参数,引用作为函数的参数
- 指针变量作为函数参数实现对输入的两个整数按大小顺序输出
- 指针的输入特性和输出特性
- 函数指针作为函数的参数
- 函数指针作为某个函数的参数
- 函数指针作为某个函数的参数
- 函数指针作为某个函数的参数
- 函数指针作为函数的参数
- 指针作为函数参数的情形
- 使用指针作为函数参数的注意事项
- 2.4 作为函数参数的指针
- 指针作为函数参数的讨论
- 指针类型作为成员函数的参数
- 指针类型作为成员函数的参数
- 原生javascript实现鼠标在窗口按下拖动,元素放大效果。
- js导出excel
- 算法入门——初级队列
- P1162 填涂颜色
- 回调函数中调用类中的非静态成员变量或非静态成员函数
- 指针的学习(3)指针作为函数的参数的输入和输出的参数的特性
- [POJ] 2411 Mondriaan's Dream [轮廓线dp]
- PHP 报错 Warning: Unknown: failed to open stream Fatal error: Unknown: Failed opening required
- Springboot学习一 helloworld
- Windows远程桌面连接ubuntu 14.04设置教程
- Unity里用最简单的办法实现一个物体一直看另一个物体
- 新写的博客开始
- File复制
- 安装mysql-python时,报错 Python version 2.7 required, which was not found in the registry.