我有一些代碼,我用下面的變量聲明mantaining:傳遞C數組爲char *函數參數
char tmpry[40];
它正在使用此功能使用:
char *SomeFunction(char *tmpryP) {
// Do stuff.
}
功能電話是:
SomeFunction(&tmpry[0]);
我很該死的肯定,這只是一樣:
SomeFunction(tmpry);
我甚至檢查過,SomeFunction中的char *指針最終指向與數組相同的內存位置。
我的問題是關於這兩個函數調用是否相同(因此原始程序員只是討厭)的健全性檢查?
我認爲這將是很好的傳遞也長到SomeFunction的C Programming FAQ部分,以防萬一...... :) – 2009-04-08 06:25:03
字符數組的名稱是數組第一個元素地址的別名。 – David 2009-07-15 16:07:15
你好,我是那些寫這樣的「討厭」的程序員之一。一般來說,我在C++代碼中這樣做,因爲與當前使用的數組抽象關係的耦合較少。即對於一個* abstract *類似的數組結構(像`std :: vector`),重載`operator []`表達式`x`和`&x [0]`將意味着完全不同的東西,* second *其中一個更適合我的意圖。當然,對於純C來說,所有這些都不重要,因爲無論如何C中幾乎沒有數據抽象;因此應優先考慮具有卓越可讀性的拼寫。 –
ulidtko
2013-08-20 11:08:17