char str的問題,char str 7 string 這樣賦值有問題,為什麼不對?

時間 2022-03-31 09:00:21

1樓:小小好寶貝

怎麼和二進位制相關了呢,,,二進位制只是一種計數方式呀,程式設計的時候當然用我們熟悉的十進位制了,用二進位制太麻煩了吧。

二進位制是機器內部的表現形式,我們不必去關心它,像:long表示整數,但整數如何表示呢?如:

10,用二進位制表示是0000 0000 0000 0000 0000 0000 0000 1010,那麼在計算機內部以其補碼,(正數補碼為其本身),表示。所以如果我們寫:long a = 10;也就表示,在記憶體裡申請了四個位元組,也即32個二進位制位,就是我上面寫的。

這是單個型別的定義。

再說陣列,char str[2] = ;表示:0000 0001 0000 0002 ,1和2這裡是asicc碼,你這樣寫肯定不會報錯,但顯示的卻不是1,2,12和'1''2'的區別相信char和int的區別了。它表示,用char型變數,申請連續的2個記憶體,因此我們在後來用中可以用:

str[0],str[1]來取數。char str[33]表示有33個用來放char的位置。至於說如果是:

char str,這種情況一般都要及時初始化,否則很容易造成記憶體出錯。至於你說的**制好像沒怎麼聽說用,不過你可以用x=a*1+b*4+c*16+d*64。。。來計算出abcd,然後按從高到低位順序排列即可:。。。

dcba即表示x

2樓:

呵呵,我看得有點亂。這個資料型別佔用的記憶體(你說的二進位制位數)跟裡面的數字是沒有任何關係的。打個比方:

char str[33]這個語句就好比你買了33箱啤酒,而這每一箱呢有8瓶啤酒(char型別佔一個位元組,8位二進位制數)。你還是找本c語言書來看看吧。國內的你就看譚浩強的《c語言程式設計》吧。

入門還是不錯的。

3樓:冰q_q峰

char str[33]是字元陣列,描述的是字元陣列的長度,sizeof()函式可以看變數所佔空間的大小,char a是一個字元如果是ascii碼一個佔8個二進位制位;二進位制理論石油馮諾依曼,圖鈴提出的,是計算機的根本,二進位制是根據硬體來的,計算機裡是脈衝訊號,儲存資料就是高電平`1`和低電平的`0`,根據現在的計算機long應該是64位,short應該是16位的,二進位制是理解每個資料型別佔記憶體的大小和可以表示的數的範圍

4樓:陳暴龍

c語言並不是機器語言 與二進位制並不掛鉤.

例如:char str[5];

表示定義了5個char型的單元 而每個單元 相信char為1位元組 1byte=8bit

就是說5byte=40bit

為40個二進位制單位.

僅此而已

希望您喜歡我的回答

5樓:beyond水木

不是,是針對的字元的個數。

char str[7]="string!"這樣賦值有問題,為什麼不對?

6樓:匿名使用者

char str[7]="string!" ; //定義了7個字元的空間,後面賦值是字串共7+1個字元(string!\0),所以有越界現象出現。應該為:

char str[7+1]="string!"

7樓:臺笑翠

char str[7]="string!";陣列越界了。字串系統後面預設新增‘\0’,char str[7]="string!

\0"。以表示字串結束。陣列最少需要8個元素。

char str[8]="string!"

c語言問題 char str[20]="program",*p;p=str;

8樓:幸巴達

str[0]首元素沒錯

p是首地址。

而*p是首地址指向的值,也就是首元素。

9樓:

char str[20]="program",實際上是申請了20個char的空間並將str指向這組空間的首地址,p=str;就是令p也指向這組空間的首地址, 所以*p和str[0]都表示第一個元素 ‘p',str[0]就是首元素啊,不是首地址

10樓:

str[0]是首元素,str是陣列首地址,p=str是將指標p指向陣列首地址,*p取的是陣列的第一個元素“p”,當然就跟str[0]相等了。如果寫成*p=str,如你所想,這時候p存放的就是陣列的首地址了。

11樓:匿名使用者

為什麼其中*p 與str[0]的值是相等的啊?答: str[0]表示 串的第一個字元,p是首地址,*p就是首字元

str[0]與*p一樣的。

指標變數p存放的是不是陣列的首地址? 答:p=str就是將陣列的地址送入p,所以 “是”

還有為什麼str[0]是首地址,我認為str[0]是首元素啊。 答:這裡str[0]是首字元,不是首地址。

12樓:匿名使用者

是首地址 str是一組單元格 str[0]的確是首元素 但就指標作用而言它就是指首地址

13樓:春雨_潤物

p存放的是首地址。

*p才代表的是首地址上的元素。

c語言 char *str 與char str[] 這倆種定義字串到底有什麼區別

14樓:園林植物手冊

一、概念不同

char *str 宣告的是一個指標,這個指標可以指向任何字串常量。char str 宣告的內是一個字元陣列容,陣列的內容可以是任何內容,嚴格意義上說,末尾加上'\0' 之後才能算是字串,

二、變數不同

char *str裡的str是指標變數,str的值未初始化(區域性變數的話。全域性則自動初始化為null)。char str[ ]裡str是地址常量,str的值是str[ ]的地址。

三、定義方法不同:

在char * str中,明顯str的型別是char*。這沒什麼特殊的,只是一個簡單的char指標。char str是不能這樣定義的,所以假定用char str[6] = "abcde";那麼這裡str的型別是char[6](6個,不是5個,因為最後有個0) ,而這種定義語句也是定義一個char[6]型別的唯一方法。

15樓:這自來水來自這

char *str; 這裡str是指標變數,來str的值未初源

始化(區域性變數的話。bai全域性則du自動初始化為null)char str[10]; 這裡zhistr是地址常量,daostr的值是str[0]的地址

16樓:匿名使用者

兩者都代表bai一個字元陣列存du儲空間的首地址,zhi區別在:

char *str;

這個變數可dao以進行指標運算,比如

回:答str++;

str--;

但如果定義成:

char str;

則str++這樣的語句是錯誤的,這個首地址不得進行賦值計算。

在不改變str指標指向地址的情況下,下面的語句是一樣的結果。

printf("%s",str+2);

17樓:

第一種為定義一個指標變數;

第二種為定義一個陣列;

如果定義時為其賦初始值,如char *str1 = "hello world!

18樓:匿名使用者

而且char *str中str更方便活用因為是變數 所以可以進行多重操作,從某種意義上說,一般採用第一種方式去定義一個字串,,注意下越界和初始化的問題就好了

19樓:匿名使用者

char *str 宣告的是一個指標,這個指標可以指向任何字串常量;

char str 宣告的是一個字元陣列,陣列的內容可以是任何內容,嚴格意義上說,末尾加上'\0' 之後才能算是字串

關於char str的問題,作為指標陣列,它的這種輸入輸出我不理解

這個就有點意思了。想搞清楚你的問題,需要理解指標的本質,它就是個地址。第一個int p 1 其實這個定義,本質上和int p沒什麼區別,都是開了四個位元組的空間,用來存一個整型指標的值。但是和下面卻出現了不同。這個是因為 p和p代表的值不同。對於int p 1 p本身就是這個陣列的首地址,而 p其實...

工作問題問題,工作問題中的問題

既然知道是自己性格的問題,太好說話,老好人當的久了,別人就會習慣成自然,把使喚你當成理所當然。所以最根本的就是要改變自己,從學會說不開始,可以試一試哦。馬善被人騎,人善被人欺。一建議觀察平時別人是怎麼說話辦事的 跟誰關係好 和誰關係不好 想一下這是為什麼利益鏈是什麼。這些東西很多都要靠自己去領悟 一...

關於唸咒的問題,唸咒的問題!!!!!唸咒的問題!!!!!

向天果 一門深入,是讓您持一個咒,很多遍,很長的時間。每天堅持,不間斷 不夾雜 不懷疑。唸的多當然好,但是對於初學來講,容易分心,就是這個意思。最近煩心事多,是您的心還沒有定下來,定下來就好了。所以要一門深入才能見效果。祝願福慧雙增,吉祥如意。南無阿彌陀佛 張輝 一樓說的很好。二樓說多了就跑題,反到...