音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

請(qǐng)教個(gè)c語言的問題(一個(gè)面試題)

作者:northerns 欄目:單片機(jī)
請(qǐng)教個(gè)c語言的問題(一個(gè)面試題)
一下程序有什么錯(cuò)誤,怎么改正?
unsigned CHAR *func()
{
  unsigned CHAR i=0;
  ++i;
  return &i;
}

2樓: >>參與討論
lanmp
臨時(shí)變量不能通過這種方式傳遞的指針進(jìn)行調(diào)用
去看那個(gè) 高效C編程

3樓: >>參與討論
平常人
函數(shù)返回后臨時(shí)變量消失,返回的指針也無意義了!
另一個(gè)要點(diǎn)是,++i很可能被編譯器優(yōu)化掉,在函數(shù)返回前等同于i=1;這樣分析下去,編譯器中的優(yōu)化器就要被搞暈了,“如何返回一個(gè)指針指向一個(gè)常數(shù)1呢?”

所以,這個(gè)函數(shù)的另一個(gè)結(jié)局是,你得到了一個(gè)指向一個(gè)常數(shù)1的指針!

我被搞暈啦!~~~~

4樓: >>參與討論
Lgend
哈哈
樓上的說得很有意思啊

5樓: >>參與討論
xfliu0224
同意平常人的看法
 
6樓: >>參與討論
computer00
這樣的程序很難說是哪里出了錯(cuò)誤。
例如,我可能寫這樣一個(gè)程序,目的是為了看看臨時(shí)變量i的地址到底分配在哪個(gè)地址了。通過函數(shù)返回,再打印出來,就可以看到了。

沒有說明程序的目的,我們就不好指出錯(cuò)誤。如果要說錯(cuò)誤的話,我也可以說++i錯(cuò)了,因?yàn)槲覀兊哪康氖且?-i……………………

7樓: >>參與討論
HWM
按樓上的說法就不可能出現(xiàn)任何錯(cuò)誤,因?yàn)槲业哪康木褪亲屗鲥e(cuò).
 
8樓: >>參與討論
computer00
也可以這么說,你說我想試試這個(gè)編譯器對(duì)這條語句會(huì)不會(huì)報(bào)錯(cuò)
在測試編譯器的時(shí)候,沒準(zhǔn)就有人這么做過。


但是這個(gè)還是有目的的。語法錯(cuò)誤可以指出來。但是邏輯錯(cuò)誤或者思維錯(cuò)誤,不給出目的的話,叫人家怎么指出?

9樓: >>參與討論
xc_cz
我覺得應(yīng)該是這樣
unsigned CHAR func()
{
  unsigned CHAR *i=0;
  ++i;
  return &i;
}


10樓: >>參與討論
IceAge
static unsigned CHAR i=0;
 
11樓: >>參與討論
leixiaow
關(guān)注中
 
12樓: >>參與討論
xysl
個(gè)人愚見:)

unsigned CHAR *func()
{
  unsigned CHAR i=0;
  ++i;
  return &i;
}

1:這個(gè)函數(shù)有用嗎?反回值是好多.理論上每次返回都="1",有用嗎?
2:一般來說,用到指針返回的函數(shù)還是少,最少我用得很少,這樣寫有意思嗎?
3:語法上應(yīng)該沒得什么錯(cuò)誤,不過要看什么編譯器

Build target 'Target 1'
compiling main.c...
linking...
Program Size: data=12.0 xdata=0 code=109
"TEST" - 0 Error(s), 0 Warning(s).
這是在keil C51上編譯的
Clean: Deleting intermediary and OUTPUT files.
Clean: Deleted file "D:\e\program\pic\wsTEST060708\main.obj".
Clean: Deleted file "D:\e\program\pic\wsTEST060708\main.cce".
Clean: Deleted file "D:\e\program\pic\wsTEST060708\wsTEST.lde".
Clean: Deleted file "wsTEST.cof".
Clean: Deleted file "D:\e\program\pic\wsTEST060708\wsTEST.mcs".
Clean: Done.
Executing: "C:\HT-PIC\BIN\PICC.EXE" -C -E"main.cce" "main.c" -O"main.obj" -Q -MPLAB -16F73
Compiler operating in DEMO mode.
Some command LINE options are disabled and compilation is delayed.
Register this compiler to enable these options.

Warning[000] D:\e\program\pic\wsTEST060708\main.c 66 : pointer to non-static object returned
Executing: "C:\HT-PIC\BIN\PICC.EXE" -E"wsTEST.lde" "D:\e\program\pic\wsTEST060708\main.obj" -Q -MPLAB -16F73 -O"wsTEST.cof"
Compiler operating in DEMO mode.
Some command LINE options are disabled and compilation is delayed.
Register this compiler to enable these options.


MEMORY Usage Map:

Program ROM   $0000 - $0051  $0052 (    82) words
Program ROM   $02AA - $07FF  $0556 (  1366) words
                             $05A8 (  1448) words total Program ROM

Bank 0 RAM    $0020 - $0048  $0029 (    41) bytes
Bank 0 RAM    $007F - $007F  $0001 (     1) bytes
                             $002A (    42) bytes total Bank 0 RAM  

Bank 1 RAM    $00FF - $00FF  $0001 (     1) bytes total Bank 1 RAM  


Program statistics:

Total ROM used     1448 words (35.4%)
Total RAM used       43 bytes (22.4%)

Loaded D:\e\program\pic\wsTEST060708\wsTEST.cof
BUILD SUCCEEDED: Sat Jul 15 14:32:39 2006
這是在mplab上picc 8.02的結(jié)果。不過這些與標(biāo)準(zhǔn)的C編譯器都有一些不一樣的地方。
但最少語法沒錯(cuò)。
4:unsigned CHAR *func(void)
從規(guī)范上應(yīng)該是這樣的。

13樓: >>參與討論
tonydesign
有收獲了
多看看還是好的。

14樓: >>參與討論
nfs270
了解
看來這里有不少高手啊,受教了,以后還要好好學(xué)C啊!還是比較管用的!

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
用MCU來實(shí)現(xiàn)DS1302的功能,程序量會(huì)不會(huì)很大?
關(guān)于C8051F020的UART1在波特率加倍時(shí)會(huì)變瘋。
AD 轉(zhuǎn)換速率200ksps 怎么換算為轉(zhuǎn)換時(shí)間?ksps什么意思?
crc問題請(qǐng)教?
請(qǐng)教 液晶顯示模塊‘鬼影’的去除
免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)