鍍金池/ 問答/ C++問答
半心人 回答
代碼如上,ppp可以成功返回沒有報(bào)錯(cuò),ppp是個(gè)左值,那肯定不會(huì)是移動(dòng)的吧,那就要執(zhí)行拷貝構(gòu)造函數(shù)吧,但是unique_ptr沒有拷貝構(gòu)造啊。。。。

你這個(gè)判斷是錯(cuò)的,給你一個(gè)例子如下:

#include <iostream>
#include <memory>

using namespace std;
static unique_ptr<int> p1 = std::make_unique<int>(10);

// move -> copy construction -> failed
unique_ptr<int> foo()
{
    auto p = make_unique<int>(10);
    return p;                   // 1 ok p is local parameter(rvalue) can run it with move
    //return move( p );         // 2 also ok
    //return p1;                // NOK. p1 is lvalue can not performance move on it.
}

int main()
{
    unique_ptr<int> p = foo();

    cout << *p << endl;
    return 0;
}

首先,ppp是return回來(lái)的局部值,這是右值而不是左值;
其次,std::unique_ptr不接受左值作為入?yún)⒌目截悩?gòu)造函數(shù). 只有這個(gè):

unique_ptr( unique_ptr&& u ) noexcept;

你再揣摩一下這個(gè)例子吧:
https://github.com/lynnboy/Cp...

款爺 回答

因?yàn)槟J(rèn)的 content-type 是 application/x-www-form-urlencoded,瀏覽器會(huì)把你要 post 的內(nèi)容轉(zhuǎn)義。你可以換成別的類型,比如用 FormData 或者 application/json、text/plain 之類的。

淚染裳 回答

錯(cuò)誤已經(jīng)提示壓縮混淆時(shí)src/col.js 23 行報(bào)錯(cuò)

青檸 回答

沒有的,已知的模板引擎都實(shí)現(xiàn)了包含(v-for這類)在內(nèi)的很多的功能。
這么小的一個(gè)功能,你用jquery模擬一下就行了

挽歌 回答

func 由于是形參,雖然a跟b的數(shù)值調(diào)換了(a,b是int *類型也就是你說的地址(地址也是值)),但是不是引用傳遞,所以對(duì)p,q沒有任何影響。

func1 你的int *c都沒初始化就賦值*c=*a;確定能跑通?

void fun1(int *a,int *b)
{
     int *c = new int;
     *c=*a;
     *a=*b;
     *b=*c;
}

func1 更改的是*a 和 *b的數(shù)值(*a指的是取a地址的內(nèi)容,也就是說把a(bǔ)地址的內(nèi)容和b地址的內(nèi)容交換了,內(nèi)存層面的操作全局都是有效的),所以最后輸出結(jié)果5,3

你的輸出結(jié)果3,3是怎么打印的?主要你的程序沒初始化指針肯定拋異常啊

舉個(gè)例子內(nèi)存里有4個(gè)值,A1->B1,A2->B2,A3->B3,A4->B4其中A是地址B是值,B1=A3,B2=A4也就是說A1和A2存的是A3,A4的指針,A1,A2,A3,A4分別對(duì)應(yīng)你程序的p, q, x, y變量

進(jìn)入func,p傳遞給a,A5->B1, q傳遞給b,A6->B2
func就是在函數(shù)局部交換了a,b的值對(duì)應(yīng)我的例子就是A5->B2,A6->B1交互B1和B2的值,但是func函數(shù)退出局部變量銷毀A5,A6,剩下A1->B1,A2->B2,A3->B3,A4->B4

進(jìn)入func,p傳遞給a,A5->B1, q傳遞給b,A6->B2
交換a,b的內(nèi)容(*a 就是取a地址的內(nèi)容對(duì)應(yīng)例子A5->B1=A3->B3取出來(lái)的是B3), 交換后A5->B1=A3->B4, A6->B2=A4->B3,直接看A3和A4內(nèi)存結(jié)構(gòu)變?yōu)锳3->B4和A4->B3
退出局部變量銷毀A5,A6,剩下A1->B1,A2->B2,A3->B4,A4->B3

有你在 回答

@felix 我把來(lái)自于felix的評(píng)論分享一下吧。跟上面的幾個(gè)大神說的都是一樣的,但是他貼了個(gè)官方的文檔,所以可能會(huì)更清晰完美一些。還是謝謝上面的幾個(gè)大神的幫助。下面是答案。
參見于gcc官方文檔 可以知道,這是一個(gè)C99的特性,可以使用變量名來(lái)定義數(shù)組長(zhǎng)度,但是對(duì)于C++而言是一個(gè)可選特性。
另外,在陳浩的酷客發(fā)現(xiàn)了這么一篇文章,對(duì)于理解數(shù)組亂七八糟的東西還是挺有幫助的。謝謝各位。

久舊酒 回答

第一個(gè)問題:你給出的代碼都是以字節(jié)而不是位來(lái)定義緩存大小的;
第二個(gè)問題:通常操作系統(tǒng)都提供了帶緩存的IO操作(IO流接口),如果在實(shí)際使用中通過測(cè)試發(fā)現(xiàn)瓶頸在IO,再考慮實(shí)現(xiàn)自己的IO緩存,

孤慣 回答

var a = 1就是講a定義為全局變量,你fn1()執(zhí)行的時(shí)候,fn1函數(shù)內(nèi)部,alert(a)前面并沒有定義a,就會(huì)在全局作用域中尋找a,所以第一次是alert(1),然后你的a被改為2(第二次的a也是全局的),最下面的那個(gè)alert(a)中的a就為2

1169行代碼是什么,直接看1169行,或者找到1169行對(duì)應(yīng)的未編譯文件位置找錯(cuò)誤

陌離殤 回答

1.在ubuntu系統(tǒng)中新建一個(gè)文件夾,然后將代碼拉下來(lái),編譯打包后正常(公司測(cè)試服務(wù)器);
2.在后臺(tái)同事的電腦上(ubuntu16.0.4)執(zhí)行打包命令,也沒有問題,
所以初步結(jié)論就是公司測(cè)試服務(wù)器出了問題!
所以暫時(shí)的解決方法就是更改打包的文件夾

擱淺 回答

一句話:引用的本質(zhì)在內(nèi)部實(shí)現(xiàn)一個(gè)指針常量。引用作為其它變量的別名而存在,因此在一些場(chǎng)合可以代替指針。

我給你看幾個(gè)有關(guān)指針的圖

1.指針定義和使用
01指針定義和使用
2.野指針
野指針
3.萬(wàn)能指針
萬(wàn)能指針
4.指針修改常量
指針修改常量
5.指針和數(shù)組
指針和數(shù)組
6.多級(jí)指針
多級(jí)指針
7.指針數(shù)組
指針數(shù)組
相關(guān)解答地址:引用與指針的區(qū)別
離魂曲 回答

你是想生成一個(gè)全排列的結(jié)果吧
你這個(gè)一共有
3x3x4x3x3 種可能的
而且這個(gè)不應(yīng)該用遞歸吧,直接就可以5層循環(huán)全遍歷啊,為什么要遞歸?
還有一種辦法,遞歸都不需要,用位運(yùn)算就可以提取出來(lái),根據(jù)你的情況,就是一個(gè)10位二進(jìn)制數(shù),每2位代表一個(gè)就可以提取出來(lái)了,不過要注意做過濾。
我實(shí)現(xiàn)一下后面一種情況。

var wordList = [
    ['熱烈', '萬(wàn)分', '非常', ''],
    ['歡迎', '感謝', '謝謝'],
    ['您', '親', '老板', '大神', ''],
    ['光臨', '惠顧', '支持'],
    ['小店', '本店', '火女菜館']
];
for(let i=0;i<1024;i++){
    //把i按2bit分成5份
    b2t0=i&3
    b2t1=(i>>2)&3
    b2t2=(i>>4)&3
    b2t3=(i>>6)&3
    b2t4=(i>>8)&3
    if( (b2t0==3)|| (b2t1==3) ||(b2t3==3) ||(b2t4==3)) continue
    console.log(wordList[0][b2t0]+wordList[1][b2t1]+wordList[2][b2t2]+wordList[3][b2t3]+wordList[4][b2t4])
}
裸橙 回答

id != "" 或者 != 0

如果id是基本類型

刮刮樂 回答

不一定??赡懿皇沁B續(xù)的。因?yàn)橛蟹猪?yè)映射到物理地址,所以最多一個(gè)內(nèi)存頁(yè)內(nèi)部連續(xù),頁(yè)和頁(yè)之間可以不連續(xù)。

貓館 回答

放遠(yuǎn)程cnd啥的、然后大家都引用。

墨沫 回答

沒有報(bào)錯(cuò)是因?yàn)橹苯訉?code>array[3]當(dāng)做*(array+3)處理嗎?

可以這么理解。以C++的尿性來(lái)看,這樣最簡(jiǎn)單,最快,也方便各種魔幻用法。檢測(cè)越界這種事應(yīng)該交給庫(kù),或者更高級(jí)的語(yǔ)言。

那為什么array[3],array[4]輸出結(jié)果相同?

Visual C++ 編譯器會(huì)在調(diào)試模式下把未初始化的內(nèi)存用0xCC填充。如果輸出字符串,就是喜聞樂見的燙燙燙。如果輸出int32,就是-858993460。

[...new Uint8Array(Int32Array.of(-858993460).buffer)].map(e => e.toString(16))
// <- ["cc", "cc", "cc", "cc"]

也可以搜索“補(bǔ)碼在線計(jì)算器”自己驗(yàn)證。

局外人 回答
  1. 你這個(gè)是開源項(xiàng)目中的demo代碼吧,開源項(xiàng)目中在第一級(jí)目錄下通常都一個(gè)README.md的文件或者install.md的文件,這個(gè)文件中有編譯和安裝的說明。

  2. 如果在源代碼目錄下找不到1點(diǎn)中所說的文件,則到開源項(xiàng)目網(wǎng)站去查找相關(guān)的編譯和安裝的說明。

萌吟 回答

因?yàn)樵诿臻gstd中已經(jīng)有了一個(gè)max函數(shù),編譯器無(wú)法判斷你在調(diào)用哪個(gè)max函數(shù)。做出如下修改即可。

// test.cpp

#include <iostream>
//using namespace std;

template <class T>
T max(T m1, T m2)
{return (m1 > m2)? m1:m2;}

int main() {
    std::cout << max(2, 5) << "\t" << max(2.0, 5.) << "\t"
         << max('w', 'a') << "\t" << max("ABC", "ABD") << std::endl;

    return 0;
}