堆,栈,常量区,字符串等问题(二)
来源:互联网 发布:朱雀网络和小米的关系 编辑:程序博客网 时间:2024/05/17 12:25
上一篇学习地址
char *a 与char a[] 的区别
http://blog.csdn.net/qq_26437925/article/details/52136298
main(){ char*a[]={"work","at","alibaba"}; char**pa=a; pa++; printf("%s",*pa);}
void GetMemory(char *p, int num) { p = (char *)malloc(sizeof(char) * num); } void Test(void) { char *str = NULL; GetMemory(str, 100); // str 仍然为NULL strcpy(str, "hello"); // 运行错误 }
对比如下
void GetMemory(char **p, int num) { *p = (char *)malloc(sizeof(char) * num); } void Test(void) { char *str = NULL; GetMemory(&str, 100); strcpy(str, "hello"); printf("%s\n", str); free(str);}
形参 -》 实参 (值,指向)int a =》 int *a(要真正的改变a的值,用a的指针 *a)int *a =》 int **a(要真正改变a的指向,用*a的指针**a)
堆内存
char *GetMemory3(int num) { char *p = (char *)malloc(sizeof(char) * num); return p; // 返回一个地址,地址是通过malloc而来的 函数返回后依然有效} void Test3(void) { char *str = NULL; str = GetMemory3(100); // str指向了返回的一个地址(通过malloc是有效的) strcpy(str, "hello"); printf("%s\n", str); free(str); }
字符串:栈
char *GetStr() { char p[] = "hello"; // "hello"在栈上 return p; // 返回一个地址,地址栈上的,函数返回后栈被回收了} void Test4(void) { char *str = NULL; str = GetStr(); // str会指向一个不知道的地址 printf("%s\n", str); // 垃圾内容,不是hello}
字符串:常量区
char *GetStr2() { char *p = "hello"; // "hello"在常量区, 静态区,只读的,生命周期不变 return p;} void Test5(void) { char *str = NULL; str = GetStr2(); // 始终得到的是同一个常量字符串 printf("%s\n", str); // hello}
更多参考
找工作笔试面试那些事儿(3)—内存管理那些事
http://www.lai18.com/content/1989888.html
0 0
- 堆,栈,常量区,字符串等问题(二)
- 字符串常量池、堆、栈
- java 中堆、栈、(字符串)常量池
- java堆、栈、字符串常量池
- java堆、栈、字符串常量池
- Java中内存问题总结二(栈、堆、常量池、String类在内存中实现 )
- 文字常量区 堆 栈
- (转载)未结束的字符串常量:C++堆、栈、自由存储区、全局/静态存储区和常量存储区
- Java中 堆 栈,常量池等概念解析(转载)
- Java中 堆 栈,常量池等概念解析(转载)
- Java中 堆 栈,常量池等概念解析(转载)
- Java中 堆 栈,常量池等概念解析(转载)
- Java中 堆 栈,常量池等概念解析(转载)
- Java中堆、栈、常量池等概念解析
- Java中堆、栈、常量池等概念解析
- Java中堆、栈、常量池等概念解析
- Java中堆、栈、常量池等概念解析
- Java中堆、栈、常量池等概念解析
- clion快键键
- 碉堡问题
- B-Tree 与B+Tree
- Python document-The python tutorial
- 算法-Valid Anagram
- 堆,栈,常量区,字符串等问题(二)
- 读书笔记--MySQL(1)
- 欢迎使用CSDN-markdown编辑器
- C#学习笔记 IComparable接口 IComparable<T>接口 IComparer接口
- BZOJ 1741: [Usaco2005 nov]Asteroids 穿越小行星群
- 阿里天池大数据竞赛——口碑商家客流量预测 A
- "必须搭配使用google play服务才能运行"或“您必须先更新Google Play服务才能运行此应用”-如何安装或更新google play services
- python关键字
- vuejs学习笔记