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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

請(qǐng)問如何修改才能讓程序正常運(yùn)行?

請(qǐng)問如何修改才能讓程序正常運(yùn)行?

C++
哈士奇WWW 2023-04-08 18:14:02
char* askForAString(void){ char temp[16] = ""; //這里是第81行 //scanf("%s", temp); //fflush(stdin); return temp; }char password[16] = "evlos";char inputpsw[16]; inputpsw = askForAString(); //這里是第100行if (strcmp(password, inputpsw) == 0) { printf("Allowed!"); }projectv0.cpp: In function ‘char* askForAString()’:projectv0.cpp:81: warning: address of local variable ‘temp’ returnedprojectv0.cpp:100: error: incompatible types in assignment of ‘char*’ to ‘char [16]’再請(qǐng)問 “warning: address of local variable ‘temp’ returned” 這個(gè)錯(cuò)誤是怎么產(chǎn)生應(yīng)該如何避免呢?謝謝啦 =w=
查看完整描述

3 回答

?
動(dòng)漫人物

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超10個(gè)贊

#include <iostream>#include <list>#include <string>std::string askForAString(void){
	std::string temp;	getline(std::cin, temp);	return temp;
}int main(int argc, char* argv){	std::string password("evlos");	if ( 0 == password.compare(askForAString()) ) {
		std::cout << "OK" << std::endl;
	}	system("pause");
}


查看完整回答
反對(duì) 回復(fù) 2023-04-11
?
隔江千里

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超10個(gè)贊

char* askForAString(void){    // 這里是申請(qǐng)的全局的動(dòng)態(tài)內(nèi)存
        char * temp = (char *)malloc(sizeof(char)*16) 
        //scanf("%s", temp);
        //fflush(stdin);
        return temp;
}
char password[16] = "evlos";char inputpsw[16];
inputpsw = askForAString(); //這里是第100行if (strcmp(password, inputpsw) == 0)
{        printf("Allowed!");
}free(inputpsw)


查看完整回答
反對(duì) 回復(fù) 2023-04-11
?
慕運(yùn)維8079593

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超5個(gè)贊

第一個(gè)函數(shù)的棧內(nèi)存返回了。

問題不在返回上,問題在分配上。分配內(nèi)存的語句是

char temp[16] = "";

temp數(shù)組是局部變量,局部變量是分配在棧上的。一個(gè)函數(shù)返回時(shí),他的??臻g就會(huì)被釋放了。

要養(yǎng)成良好的內(nèi)存管理習(xí)慣:面向過程的方法中建議,在A方法分配的內(nèi)存就在A方法釋放;面向?qū)ο缶幊讨薪ㄗhA對(duì)象初始化的內(nèi)存由A對(duì)象釋放。

而在第一個(gè)函數(shù)中用malloc分配內(nèi)存(malloc在堆上分配)雖不會(huì)崩潰或者warning,但是不推薦。因?yàn)榈谝粋€(gè)函數(shù)作為內(nèi)存分配者,卻沒能承擔(dān)釋放的責(zé)任(此責(zé)任轉(zhuǎn)交給第二個(gè)函數(shù)了)。如果還有函數(shù)3,函數(shù)4...函數(shù)100調(diào)用函數(shù)1,難道要函數(shù)2至函數(shù)100中都寫個(gè)free(xxx)嗎?如果有函數(shù)10000需要從函數(shù)100中返回字符串呢?工程大了以后,這樣的代碼很難維護(hù)。

我建議:C式編程管理裸奔內(nèi)存,在方法二上分配buffer,buffer指針作為參數(shù)傳遞給方法一。方法二上用完buffer后及時(shí)釋放。


查看完整回答
反對(duì) 回復(fù) 2023-04-11
  • 3 回答
  • 0 關(guān)注
  • 190 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)