回覆列表
  • 1 # 阿顏美食

    舉例如下:char a[10];1、定義的時候直接用字串賦值char a[10]="hello";注意:不能先定義再給它賦值,如 char a[10]; a[10]="hello";這樣是錯誤的!2、對陣列中字元逐個賦值char a[10]={"h","e","l","l","o"};3、利用strcpychar a[10]; strcpy(a, "hello");易錯情況:1、char a[10]; a[10]="hello";//一個字元怎麼能容納一個字串?況且a[10]也是不存在的!2、char a[10]; a="hello";//這種情況容易出現,a雖然是指標,但是它已經指向在堆疊中分配的10個字元空間,現在這個情況a又指向資料區中的hello常量,這裡的指標a出現混亂,不允許!還有:不能使用關係運算符“==”來比較兩個字串,只能用strcmp() 函式來處理。C語言的運算子根本無法操作字串。在C語言中把字串當作陣列來處理,因此,對字串的限制方式和對陣列的一樣,特別是,它們都不能用C語言的運算子進行復制和比較操作。直接嘗試對字串進行復制或比較操作會失敗。例如,假定str1和str2有如下宣告:char str1[10], str2[10];利用=運算子來把字串複製到字元陣列中是不可能的:str1 = "abc"; /*** WRONG ***/str2 = str1; /*** WRONG ***/C語言把這些語句解釋為一個指標與另一個指標之間的(非法的)賦值運算。但是,使用=初始化字元陣列是合法的:char str1[10] = "abc";這是因為在宣告中,=不是賦值運算子。試圖使用關係運算符或判等運算子來比較字串是合法的,但不會產生預期的結果:if (str1==str2) ... /*** WRONG ***/這條語句把str1和str2作為指標來進行比較,而不是比較兩個陣列的內容。因為str1和str2有不同的地址,所以表示式str1 == str2的值一定為0。

  • 2 # 使用者4243767351955

    typedef struct _test {

    int id;

    char name[20];

    int level;

    int stock;

    double price;

    int d;

    } Test;

    對結構體賦值,一般是順序賦值,或者指定賦值

    比如

    Test test[] = {

    {1, "abc", 1, 2, 1.2, 3},//對應id, name, level, stock, price, d

    {.id = 2, .level=3, price=4.2, .stock=2},//這個就是指定賦值,點後面接的是結構體成員名

    };

  • 中秋節和大豐收的關聯?
  • 光纖收發器一定要成雙使用嗎?