c語(yǔ)言 char[]數(shù)組該如何賦值?
char[]數(shù)組該如何賦值?定義數(shù)組字符[10]。如何給這個(gè)數(shù)組賦值?1定義時(shí),可以用字符串直接給Chara[10]=“Hello”賦值。注意:您不能先定義它,然后給它賦值,例如Chara[10]a[
char[]數(shù)組該如何賦值?
定義數(shù)組字符[10]。如何給這個(gè)數(shù)組賦值?1定義時(shí),可以用字符串直接給Chara[10]=“Hello”賦值。注意:您不能先定義它,然后給它賦值,例如Chara[10]a[10]=“Hello”,這是錯(cuò)誤的!2將Chara[10]={h“,”e“,”L“,”L“,”O(jiān)“}逐個(gè)賦給數(shù)組中的字符。三。使用strcpy Chara[10]strcpy(a,“hello”)容易出錯(cuò)的情況:1。Chara[10]a[10]=“Hello”//一個(gè)字符怎么能容納一個(gè)字符串?而且,a[10]不存在!2Chara[10]a=“你好”//這很容易發(fā)生。雖然a是指針,但它已經(jīng)指向堆棧中分配的10個(gè)字符的空間?,F(xiàn)在a指向數(shù)據(jù)區(qū)域中的Hello常量。這里的指針a混亂了。這是不允許的!Main(){chars[30]strcpy(s,“好消息!“)/*assign string to array*/.}當(dāng)上面的程序編譯時(shí),當(dāng)遇到chars語(yǔ)句[30]時(shí),編譯器會(huì)在內(nèi)存的某個(gè)地方留下一個(gè)連續(xù)30個(gè)字節(jié)的區(qū)域,并將第一個(gè)字節(jié)的地址分配給s。當(dāng)遇到strcpy(strcpy是turboc2.0的函數(shù))時(shí),首先創(chuàng)建一個(gè)字符串“goodnews!/目標(biāo)文件中的某個(gè)位置。其中/0表示字符串的終止,該字符串在編譯時(shí)自動(dòng)添加,然后逐字符復(fù)制到由s指示的內(nèi)存區(qū)域。因此,在定義字符串?dāng)?shù)組時(shí),元素?cái)?shù)應(yīng)至少比字符串長(zhǎng)度多1個(gè)。
發(fā)現(xiàn)一個(gè)C語(yǔ)言BUG,定義int變量時(shí)靠近c(diǎn)har的變量會(huì)變成0,是什么原因?
許多開發(fā)人員都有過這種經(jīng)歷。當(dāng)他們被一些奇怪的問題弄得精疲力盡時(shí),他們開始懷疑開發(fā)環(huán)境、編譯器、運(yùn)行時(shí),甚至生命周期。是的,我也遇到過,但是我最終發(fā)現(xiàn)開發(fā)環(huán)境、編譯器、運(yùn)行時(shí)都有漏洞,中獎(jiǎng)概率太低,比中獎(jiǎng)概率低。問題還是我們自己的,但定位問題的過程比較曲折。
在這種情況下,變量的值是不確定的。它可以是任意值或0。
2. 變量在某個(gè)時(shí)間會(huì)被其他地方修改,例如通過指針修改,或者在調(diào)用函數(shù)時(shí)通過引用修改。這兩種方法在代碼級(jí)別可能不是很直觀,很容易被忽略。
所以受試者可以根據(jù)我說的情況來分析定位問題。