分析一下代码
char *GetString2(void)
{
char *p = "hello world";
return p;
}
void Test5(void)
{
char *str = NULL;
str = GetString2();
cout<< str << endl;
}
这段代码是可以正常运行的,GetString2返回了只读的内存块,在Test5里面应该是可以访问"hello world"字符串的,在Test5里面对str的任何操作,都是在操作"hello world",所以在Test5里面是不能修改str的内容的,如strcpy(str, "hello");代码将会运行报错,或对str进行内存释放,也会报错,但对str进行读取的话是正常的,如代码中正常显示"hello world"
代码2:
char *GetString(void)
{
char p[] = "hello world";
return p; // 编译器将提出警告
}
void Test4(void)
{
char *str = NULL;
str = GetString(); //str的内容是垃圾
cout<< str << endl;
}
但这段代码运行后str的内容是垃圾,调试了下,发现代码段一、代码段二中GetString(void)返回的地址不一样,按照我的理解两个应该都是返回字符串数组的首地址,为什么两种方式得到的值不一样呢?
分享到:
相关推荐
如果这篇文章能够纠正许多中国程序员对数组名和指针的误解,笔者就不甚欣慰了。借此文,笔者站在 无数对知识如饥似渴的中国程序员之中,深深寄希望于国内的计算机图书编写者们,能以"深入探索"的思维方式和精益求精...
数组的指针和指向数组的指针变量数组的指针和指向数组的指针变量数组的指针和指向数组的指针变量数组的指针和指向数组的指针变量
数组和指针在各类编程语言中,都很重要,数组应用很广泛,理解基础很必要
这样两者的区别就豁然开朗了,数组指针只是一个指针变量,似乎是C语言里专门用来指向二维数组的,它占有内存中一个指针的存储空间。指针数组是多个指针变量,以数组形式存在内存当中,占有多个指针的存储空间。 还...
数组与指针的艺术 数组与指针的艺术
易语言数组转指针源码,数组转指针,子程序1,子程序2,子程序3,数组_整数转指针,数组_指针转整数,数组_文本转指针,数组_指针转文本,数组_字节集转指针,数组_指针转字节集,内存_申请,内存_释放,内存_取长度,内存_写入,...
10 数组和指针.pdf
数组指针和指针数组的区别
详细描述数组和指针的使用方法及各自优劣的地方。
彻底理解指针,指针数组和数组指针,指针函数和函数指针.doc
1。数组与指针区别; 2.数组&指针的相同点。 3.函数参数;
数组和指针之间的区别与联系 数组和指针之间的区别与联系
c语言中 数组名和指针的区别 来自知网的论文
C++数组与指针对象数组对象指针C++数组与指针对象数组对象指针
最新单片机仿真 用数组的指针控制P0 口8 位LED流水点亮最新单片机仿真 用数组的指针控制P0 口8 位LED流水点亮最新单片机仿真 用数组的指针控制P0 口8 位LED流水点亮最新单片机仿真 用数组的指针控制P0 口8 位LED流水...
C++数组与指针深入剖析C++数组与指针深入剖析C++数组与指针深入剖析C++数组与指针深入剖析
C++之 数组 与 指针 的 异同 pdf
数组和指针的学习资料,包括《彻底搞定C指针》、C语言指针精髓、C语言指针经验总结等等
C语言数组和指针详解,C语言的灵魂!总结详细,实例经典!