本文目錄一覽:
- 1、關於c語言,地址問題?
- 2、c語言,字符型指針char *s的長度,為什麼sizeof(s)與sizeof(*s)的長度為什麼不一樣?
- 3、C語言中代碼長度與什麼有關
- 4、c語言中整型的一維數組中每個元素地址的長度為什麼會是4個字節??
- 5、c語言指針數組各個元素的地址間隔與什麼有關?
- 6、C語言指針的地址範圍是多少?
關於c語言,地址問題?
地址和地址上存儲的字節是兩個不同的概念
內存是按照字節進行編址
可以認為所有字節排成一排,每個字節的編號就是地址值
所以地址是32還是64位與地址上能存多大東西沒關係
至於為什麼按照字節編址,是因為一個字節可以表示0-255共計256個數字,在很多情況下,比如字符串,用字節就夠了
如果按照32位進行編址必然會造成浪費
c語言,字符型指針char *s的長度,為什麼sizeof(s)與sizeof(*s)的長度為什麼不一樣?
首先,兩個sizeof所求的東西完全不一樣,另外sizeof是編譯的時候就求出長度,非運行的時候。
sizeof(s)是求指針長度,因為變量定義的是char *s;,這個長度可能是2,可能是4,還可能會是8,是由編譯的時候決定的,比如VC6.0編譯器長度就是4,因為VC6.0是32位的編譯器,它的地址長度是32位表示,4個字節。gcc64位編譯器則長度是8,64位系統地址表示長度64位8字節。TC是16位編譯器,所以長度是2。綜上sizeof(s)與電腦位數和總線有關,但是最重要的是與編譯器有關,win64位的系統也可以運行32位的程序,VC6.0編譯的程序在win64上運行,sizeof長度依然是4。如果程序gcc64位編譯的,則不能運行在XP32位的系統上
sizeof(*s)是求字符的長度,長度為1,不管什麼編譯器長度不變。
C語言中代碼長度與什麼有關
代碼長度一般不受限制。
源代碼(也稱源程序),是指一系列人類可讀的計算機語言指令。
源代碼是相對目標代碼和可執行代碼而言的。 源代碼就是用彙編語言和高級語言寫出來的地代碼。目標代碼是指源代碼經過編譯程序產生的能被cpu直接識別二進制代碼。可執行代碼就是將目標代碼連接後形成的可執行文件,當然也是二進制的。
在現代程序語言中,源代碼可以是以書籍或者磁帶的形式出現,但最為常用的格式是文本文件,這種典型格式的目的是為了編譯出計算機程序。計算機源代碼的最終目的是將人類可讀的文本翻譯成為計算機可以執行的二進制指令,這種過程叫做編譯,通過編譯器完成。
c語言中整型的一維數組中每個元素地址的長度為什麼會是4個字節??
不是地址都是四個字節,樓上想說的是指針佔四個字節吧。
你這裡和書上不一樣是因為你們的操作系統不一樣。int類型的數組,每一個元素地址占的是一個int類型大小的字節數。為什麼一會兒是兩個字節,一會兒是四個字節呢,如下:
short、int和long類型都表示整型值,存儲空間的大小不同。一般,short類型為半個機器字長(word)長,int類型為一個機器字長,而long類型為一個或兩個機器字長(在32位機器中int類型和long類型通常字長是相同的),而在不同的機器位下,所佔的字節也是不一樣的:
16位系統中,int類型佔兩個字節(所以書上應該用的是16位系統),32位以上的的系統,基本都是4字節的了,所以你打印出來的是4個字節。
有異議可繼續追問!
c語言指針數組各個元素的地址間隔與什麼有關?
1、首先,你對地址指針的理解是正確的。它們指向字符所存的內存地址。
2、其次,在不同的運行環境,編譯環境下,運行結果是不同的,只能說,你的代碼是沒問題的,運行結果很難說。
3、典型的結果應該是,每個字符用1個字節+1個字節。所以,應該按順序分別是:
(2、3、6、5),也就是說,第一個字符需要2個字節存放,第二個字符串要用3個……
注意的是,字串之間會有一個實際值為”0“的數據用以隔開它們,所以,看起來地址間隔比字串的位數多了1位。
4、在我的電腦上,用DEV
C++
工具進行實際編譯測試,得到的結果與我上面說的相符。不知道你用的是什麼編譯和調試工具。
以下是運行截圖:
C語言指針的地址範圍是多少?
C語言的指針地址範圍是4字節空間,即從地址0x00000000~地址0xFFFFFFFF。但其中有些字段是系統保護的或所使用的硬件平台根本就不存在,所以用戶指針並不能完全使用這個空間。不過用戶不必擔心,只要按規範使用指針,系統都會自動正確安排。
C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
儘管C語言提供了許多低級處理的功能,但仍然保持着良好跨平台的特性,以一個標準規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。
二十世紀八十年代,為了避免各開發廠商用的C語言語法產生差異,由美國國家標準局為C語言訂定了一套完整的國際標準語法,稱為ANSI C,作為C語言最初的標準。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/280552.html