字符指针初始化方式与字符串存储位置之间的关系

本文通过两个C++函数实例展示了字符串在不同情境下如何被存储于内存的不同区域。重点介绍了常量区和堆栈的区别,并解释了为何某些情况下返回的指针会变成野指针。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#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中是声明了一个字符数组并用字符串对它进行初始化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值