字符指针初始化方式与字符串存储位置之间的关系
2014-04-12 18:50
288 查看
#include <iostream> using namespace std; char* fun() { char *p="Hello cjc"; return p; } char* fun1() { char p[]="Hello xiao cjc"; return p; } int main(void) { char* str1,*str2; str1=fun(); str2=fun1(); printf("fun1 print out\n%s\n",str1); printf("fun2 print out\n%s\n",str2); system("pause"); return 0; }
由以上的结果可知,当在fun()中初始化字符串时,字符串存储在常量区,而fun1()中的字符串则被存储在堆栈当中,此时返回的局部变量指针为野指针。可以这样理解,fun中是取常量字符串的地址为字符串指针赋值,而fun1中是声明了一个字符数组并用字符串对它进行初始化。
相关文章推荐
- 字符串的存储方式,以及sizeof()(字符数组,字符指针,Sizeof总结)
- 输入一个字符串,存储在字符数组里,用指针的方式逐一显示字符,并求其长度
- C的字符串和字符数组之间的关系
- 字符串、字符数组、数组、指针关系总结
- 获取特定字符之间的字符串的位置及内容
- C语言_为什么字符串可以赋值给字符指针变量,字符串的属性及存放位置
- 字符串赋值给字符指针(char *a="hello")的正确理解方式
- C语言 编写字符串操作函数strrchr,在字符串中查找目标字符最后一次出现的位置,返回指向这次位置的指针。
- stcpbrk--在源字符串(s1)中找出最先含有搜索字符串(s2)中任一字符的位置并返回,若找不到则返回空指针。
- C++编程入门系列之二十六(数组、指针和字符串:数组的存储与初始化、对象数组、数组作为函数参数)
- 【c语言】编写一个函数new,对n个字符开辟连续的存储空间,此函数应返回一个指针(地址),指向字符串开始的空间
- 编写一个函数new,对n个字符开辟连续的存储空间,此函数应返回一个指针(地址),指向字符串开始的空间。new(n)表示分配n个字节的内存空间。
- 指针和字符串:求待定字符的位置
- 指向字符的指针数组来存储一个字符串列表
- 鸡啄米:C++编程入门系列之二十六(数组、指针和字符串:数组的存储与初始化、对象数组、数组作为函数参数)
- c/c++中字符数组和字符指针的存储方式
- 返回指定字符在字符串中的位置指针
- 用指针存储字符数组表示字符串
- 字符、地址详解(及字符串指针、字符数组关系)
- 内排序- 字符串处理 字符与数字之间的对应关系