c語言中結構體賦值
發布時間: 2022-08-26 18:31:44
㈠ c語言如何為結構體中的某個屬性賦值
C語言中,數組間不能相互賦值——這是歷史遺留問題,當年在B語言中,數組名和指針名是沒有區別的(除了數組名定義時自動為數組分配內存),數組名可以指向別的對象或數組。換句話說,數組名之間的賦值是淺賦值。後來C語言的設計者發現這種規則在C語言行不通,但是C語言的設計者又不想破壞對B語言的兼容性,於是就乾脆禁止了數組間的賦值(這樣B語言程序員在C語言中嘗試「數組間淺賦值」的時候就會得到明確的報錯)。後來B語言退出歷史舞台,而C語言的這種設計卻一直保留下來,遺臭萬年……
字元數組間的賦值需要用
strcpy
或(如果知道數組長度)
memcpy。在這個例子中strcpy(s1.ch,"this");是標准做法。不用擔心性能損失,現代編譯器都把
strcpy
作為內置過程,可以保證和匯編一樣高效(甚至更高效)
㈡ C語言,結構體中的數組怎麼賦值,
(1)用字元常量逐個初始化數組。例如:
char a[8]={'i','l','o','v','e','y','o','u'};
把8個字元依次分別賦給c[0]~c[7]這8個元素。
如果在定義字元數組時不進行初始化,則數組中各元素的值是不可預料的。如果花括弧中提供的初值個數(即字元個數)大於數組長度,則出現語法錯誤。
如果初值個數小於數組長度,則只將這些字元賦給數組中前面那些元素,其餘的元素自動定為空字元(即'