1. 程式人生 > >C++結構體陣列賦值問題

C++結構體陣列賦值問題

在使用結構體時,每當遇到字串陣列時總是容易出項問題:好好的總結了下!!
例如:定義一個結構體

struct Fac
{
   int num;
   char Fac_name[20];
   char picture[2][20];
};

對這個結構體的賦值

struct Fac cvsc;

cvsc.num=1;
strcpy(Fac_name,"cvscmade");
strcpy(picture[0],"first_meet");
strcpy(picture[1],"second_meet");
strcpy(picture[2],"third_meet");

好了對這個結構體賦值完成了。

總結:@@1 對與一維的字串陣列,可以直接對字串的名稱進行賦值,這樣其實得到是從字串       陣列的〔0〕位開始按順序儲存要賦的值
@@2 對於二維字串陣列,按每個陣列的〔0]位開始賦值,但是不能                strcpy(picture[0][20],"first_meet"); 這樣其實是對二維陣列的第0,20進行賦值,結果       就出現錯誤了

相關推薦

C++結構陣列問題

在使用結構體時,每當遇到字串陣列時總是容易出項問題:好好的總結了下!!例如:定義一個結構體struct Fac{   int num;   char Fac_name[20];   char picture[2][20];};對這個結構體的賦值struct Fac cvsc;cvsc.num=1;strcpy

C結構使用的冒號和點號

根據論壇中,別人的回答,總結試驗的成果 1、其中位域列表的形式為: 型別說明符 位域名:位域長度 struct bs {  int a:8;  int b:2;  int c:6; }data; 說明data為bs變數,共佔兩個位元組。其中位域a佔8位,位域b佔2位,位域c

c結構陣列語法細節

1. 上述程式最後輸出結構體陣列中字串的第一個字元。輸出 h 。 2 此段程式碼執行結果與上段相同,唯一區別就是陣列元素賦值時加了大括號, 第一段程式碼,雖然沒加大括號,但通過換行區別陣列元素.總之兩種寫法都正確. 這裡記錄一下,也避免自己以後大驚小怪,算是學習過程中的

陣列 結構

在 C/C++中,普通陣列只是分配在連續地址上的一段相同型別的變數組成的,而不是一個變數。像a[n]並不是一個變數,而是通過指向第一個值的指標來操作 的。陣列和指標有著很密切的聯絡。 可以認為陣列操作是指標操作的另一種寫法。 因此像陣列整體賦值這類操作是沒有意義的,因為它們

陣列結構部分問題

之所以寫這個部落格,是因為前兩天參加了深信服的筆試,整體難度不大,提前半個小時寫好了,然後還檢查了一遍選擇題。在選擇題上面,它是選項不確定的。有幾道選擇題不確定,頓時發現自己的基礎還是不紮實呀。下面總結

做個筆記——C語言結構成員的一個小問題

#include<stdio.h> #include<string.h> //定義一個結構體,名為Student struct Student { int sid; int age; char name[200

C/C++ 結構陣列與typedef

記錄自己不經意間遇到的錯誤, 調了很久才發現是結構體這裡的問題:   ******************************************************************************************************

結構變數給同類型的結構變數

                                          &

C:char 陣列

定義一個數組char a[10]; 怎麼給這個陣列賦值呢? 1. 定義的時候直接用字串賦值 char a[10]="hello";  正確 【注】:不能先定義再給它賦值,如char a[10]; a[10]="hello"; 這樣是錯誤的! 2. 對陣列中字元逐個賦值 char a[1

C#結構陣列排序排序

public class SignList : //IComparable// { [JsonProperty(“faceimage”)] public string Faceimage { get; set; } [JsonProperty("fperson

兩個Mat結構之間

cv::Mat M(480,640,CV_8UC3); 表示定義了一個480行640列的矩陣,矩陣的每個單元的由三個(C3:3 Channel)8位無符號整形(U Unsigned U8 8位)構成。表示的是三通道,是彩色影象 cv::Mat M = cv::Mat::eye(heigh

結構變數及成員引用

#include<stdio.h>#include<string.h>struct  person{char name[12];int age;char sex;float height;float weight;};int main(void){st

C語言 字元陣列

main() { char s[30]; strcpy(s, “Good News!”); /給陣列賦字串/ . . . } 上面程式在編譯時, 遇到char s[30]這條語句時, 編譯程式會在記憶體的某處留 出連續30個位元組的區域, 並將第一個位元組的地址

對於結構變數的誤區

以前在使用結構體時沒有在結構體變數之間直接賦值,今天同事在檢視別人的程式碼時,發現有兩個結構體變數直接賦值的語句當時感覺這個語句不對,認為在一個結構體裡邊,既有一般的無符號整形與陣列,因為陣列的賦值是不能直接賦值,要記憶體拷貝,從這裡推理所以認為這個語句不對。於是問了一下,

5. C 結構 陣列的指標 初始化 與 記憶體釋放

結構體如下: struct student{ Int num; Char* name; } Tom,*Lily; 1.如果定義成Tom的形式,不需要為結構體分配記憶體,但是需要對name

Linux GNU C結構陣列初始化示例

實然心血來潮,想學習一下結構體陣列的初始化方面的知識。 以下是GCC實然心血來潮,想學習一下結構體陣列的初始化方面的知識。特有的陣列初始化的風格: // 陣列賦值另一種方式,但只在gcc下編譯通過,g++不能 enum { AAA = 0, BBB, CCC,

結構成員-標記化結構初始化語法-結構成員前面加小數點

指定成員初始化 static struct file_opretions sep4020_key_fops = { .ower = THIS, .read = sep4020_

C++:對結構中字元陣列時,出現表示式必須是可修改的左的問題

問題描述:         在C++中為結構體中的字元陣列賦值時,出現”表示式必須是可修改的左值“的錯誤提醒,編譯報錯“不可指定資料型別”。           &n

c語言 陣列名&&結構名 為什麼不能用陣列名給陣列結構卻可以

/* name:陣列&&結構體的一些小插曲(陣列名,結構體名,整體賦值...)  */  #include <stdio.h> int main() { char c1[3]={'a','b','c'}; /*c1[3]={'a','b'};這樣不行 why ?so easy! c

如何給結構中的字元陣列

舉例如下: char a[10]; 1、定義的時候直接用字串賦值 char a[10]="hello"; 注意:不能先定義再給它賦值,如 char a[10]; a[10]="hello"; 這樣是錯誤的! 2、對陣列中字元逐個賦值 char a[10]={'h','e',