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

2022-03-31 12:15:07 字數 3879 閱讀 5187

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' 之後才能算是字串

以下程式段的輸出結果是chars

字串為 141aabc 表示 t水平製表符,不顯示 長度為9 表示符號 141表示十進位制的97,ascii碼的a t是水平製表符 有以下程式段,輸出結果是 char s 141 141abc t printf d n strlen s char s 141 141abc t 轉義字元 141 三個...

c語言中定義指向字元的指標陣列chars5則

void sort char s 這裡接收到的是抄指襲針陣列,即 陣列中各元素 是指標位址,s是陣列首位址 s i 表示第i 1個元素 的值 位址,乙個字串的首位址,s i 表示這個字串的第乙個元素,是個字元 s i是第i 1個元素的位址,s i 是位址中的資料,等同於s i c語言中char是什麼...

製冷的問題真空問題,製冷的問題真空問題

有個問題 1 你是用系統本身的壓縮機來抽真空嗎?如果是,那並不是抽的時間越長越好,應該有技術要求的,即當真空度達到一定的時候的時候,應該停止,否則會損害機器本身。2 如果用外部真空幫浦來抽,那麼應該分數次間斷抽,當達到一定真空度後就停止了,然後需要保持一定的時間,嚴格來說得一天左右,如果真空度減小不...