C語言中 陣列可以從下標為1開始賦值嗎?

時間 2021-05-07 05:08:59

1樓:DK菌

從標準來講是可以的,隨便從任何乙個大於等於0的下標開始都可以;

但一般不這麼幹,C呼叫別的函式傳遞陣列時容易出問題,因為一般遍歷陣列從0開始,那麼[0]就多出來了,要是用指標和整型傳遞陣列就容易導致缺乙個元素;

對於C-風格字串是絕對不行的,如果字串已初始化為0,那麼[0]的值就是0即'\0',在ASCII中標誌著字串末尾,在呼叫庫函式時,一般認為'\0'就是字串末尾,其後的元素將被忽略,也就是說相當於傳遞了乙個長度為零的字串,肯定是會出錯的,而對於未初始化直接使用則可能使字串開頭多出來乙個隨機字元;

從0開始數數是約定俗成的規矩,大多數庫函式以此為標準開發,所以建議不要這麼幹,除非工程要求了[0]有特殊用途(印象中這樣幹的好像並不是很普遍啊……反正我不是做C的……);

似乎有個關於程式設計師的段子就是這麼來的,說程式設計師數數從0開始數:)

2樓:小旭

可以賦值,也可以不賦值。

個人的經驗分以下兩種情況:

1.在資料結構中,a[0]一般存放陣列相關的資訊。如大小,當前指標等。詳細參考資料結構與演算法之類的書籍。

2.如果是存放一組資料,需要在for迴圈中需要比較大小,我一般從a[0]開始。比如,for迴圈的退出條件是只比較前5個數,那麼就是i < 5。

從1開始,是i <= 5,多了乙個符號。敲的多了,會煩。

為什麼C語言的陣列下標從0開始而不是從1開始?

In most programming language,the name of any array is a pointer,which is nothing but a reference to a memory location,and so the expression array n po...

C 語言中,a 1 和 a a 1 a 有區別嗎?

諆歌 a 1是右邊的1加上a本身的值,最後賦值給aa a 1是把右邊a加1的值賦值給左邊的a 其實和第乙個一樣 最後乙個,a 變數a先取值再自增1 a變數a先自增1再取值 a a這種費腦子的容易記混的沒有易讀性的語句就應該廢除 x a 等價於 x a a a 1 賦值語句在前,加法語句在後,所以簡記...

在C語言中如何使用陣列寫出乙個班級的人名並與其座位(x,y)一一對應?

OXygen 你可以使用結構體陣列 首先你要有意識到,你這不僅僅是乙個普通的型別陣列能夠存下的資訊,你只能把人名資訊和座位資訊抽象出來,寫成乙個結構體,再用結構體型別構建陣列,寫法供參考 struct stu info struct stu info group 1 3 C 的話,可以預設struc...