指针在内存分配中的简单应用
来源:互联网 发布:java properties文件 编辑:程序博客网 时间:2024/05/16 04:52
头文件 point.h
#ifndef DP#define DPchar *get_day(int);void get_a_day(const char**);#endif
函数文件 point.c
#include "doublepoint.h"#include <string.h>static const char *msg[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};void get_a_day(const char **p) {//static 定义变量相当于预定义,下次再次调用该函数时变量为改变值//既第二次调用get_a_day时, i = 1;static int i = 0;*p = msg[i % 7];i++;}/* *返回值为指针,则返回的地址没变,地址内存中的值可以改变 */char *get_day(int idx){static char buf[20];strcpy(buf, msg[idx]);return buf;}
main.c
#include "doublepoint.h"#include <stdio.h>int main(void){const char *firstda = NULL;const char *secondda = NULL;char *firstday = get_day(0);char *secondday;secondday = get_day(1);//firstday的值为Monday,因为firstday与secondday指向的内存地址一样的,//而在secondday = get_day(1)中secondday对应的内存值改变为"Monday"printf("%s\n", firstday); get_a_day(&firstda);get_a_day(&secondda);//最后输出的值为"Sunday Monday"//用gdb调试时,i保留位上次改变值,而非i = 0;printf("%s\t %s\n",firstday, secondday);return 0;}
综上所述,双指针参数可以作为传出参数,即void function(char **pp)中可以给*pp分配空间,定义等,与返回值为单指针char *pchar(void)一样,可以分配空间
- 指针在内存分配中的简单应用
- 代码在内存中的分配
- 对象在内存中的分配
- 程序在内存中的分配
- 进程在内存中的分配
- 类在内存中的分配
- 类在内存中的分配
- 虚拟函数在内存中的分配问题
- java中变量在内存中的分配
- c++类实例在内存中的分配
- 类在内存中的分配问题
- 类在内存中的分配问题
- 类在内存中的分配问题
- c++类实例在内存中的分配
- 类在内存中的分配问题
- java中变量在内存中的分配
- PHP对象在内存中的分配
- 程序在内存中的分配方式
- 随想录(符号数据与无符号数据)
- 常用正则表达式
- 推导正交投影变换
- Standford 机器学习应用的建议及机器学习系统的设计
- 使用js给td添加边框,不同条件下tr和td的visibility以及display属性的应用
- 指针在内存分配中的简单应用
- jQuery1.9.1针对checkbox的调整
- mfc 对话框 启动托盘
- 提升效率的若干Vim技巧
- Application之 属性
- 24系列EEPROM的应用
- Hdu 2066 一个人的旅行
- NANDflash和NOR flash的区别
- OpenNI:深度图显示方法