第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于char[] 與char*的問題

關于char[] 與char*的問題

C++
RectCircle 2016-01-15 18:37:57
/* 函數(shù)的返回類型是char*?我返回的是?char[]類型, 我跟蹤調試的時候返回結果還是正常,一輸出就亂碼 */ #include<iostream> using?namespace?std; char*?test() { ?char?a[20]=?"abc"; ?return?a; } int?main() { ?char*?a; ?a?=?test(); ?cout?<<?a?<<endl; ?return?0; }
查看完整描述

1 回答

已采納
?
MadMarical

TA貢獻79條經驗 獲得超122個贊

你好,你使用了靜態(tài)初始化方法在棧中開辟了內存空間,但是棧中內存是由系統(tǒng)自動釋放的,所以當test函數(shù)調用完畢后,a的空間被自動釋放。所以你應該在堆中開辟內存空間如例程1或者講a定義為全局變量如例程2。

例程1

#include?<iostream>

using?namespace?std;

char*?test()
{
????char?*a?=?new?char[3];
????*a?=?'a';
????a++;
????*a?=?'b';
????a++;
????*a?=?'c';
????
????return?a;//此時返回的a為a[2],所以b為c;
}
int?main(int?argc,?const?char?*?argv[])
{
????char*?b;
????b?=?test();
????cout?<<?b?<<endl;
????return?0;
}

例程2

#include?<iostream>

using?namespace?std;

char?a[20]?=?"abc";

char*?test()
{
????return?a;
}
int?main(int?argc,?const?char?*?argv[])
{
????char*?b;
????b?=?test();
????cout?<<?b?<<endl;
????return?0;
}

這是我的見解。

查看完整回答
1 反對 回復 2016-01-18
  • 1 回答
  • 0 關注
  • 1416 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號