位置:首頁 > 軟件操作教程 > 編程開發(fā) > PHP > 問題詳情

字符指針變量和字符數(shù)組在C語言的討論

提問人:楊紫紅發(fā)布時間:2020-11-17
(1)字符數(shù)組由若干個元素組成,每個元素中放一個字符,而字符指針變量中存放的是地址,決不是將字符串放到字符指針變量中。
(2)賦值方式。對字符數(shù)組只能對各個元素賦值,不能用以下辦法對字符數(shù)組賦值;char  str[14];   str=“I love China.”;
對字符指針變量,可以采用下面方法賦值:
      char  *a;  a= “I love China.”;       /*賦給a的是串的首地址*/
(3)對字符指針變量賦初值:
        char  *a=“I love China.”;  等價于  char  *a;  a=“I love  China.”;
   而對數(shù)組的初始化:
        char  str[14]={“I love China.”}; 不等價于  char  str[14];
                                             str[]=“I love  China.”;

 即數(shù)組可以在變量定義時整體賦初值,但不能在賦值語句中整體賦值。

(4)如果定義了一個字符數(shù)組,在編譯時為它分配內(nèi)存單元,它有確定的地址。 而定義一個字符指針變量時,給指針變量分配內(nèi)存單元,在其中可以放一個地址值,也就是說,該指針變量可以指向一個字符型數(shù)據(jù),但如果未對它賦一個地址值,則它并未具體指向一個確定的字符數(shù)據(jù)。這很危險。
       如: char  str[10]; scanf(“%s”,str);  是可以的
            char  *a;
            scanf(“%s”,a);   能運行,但危險,不提倡,在a單元中是一個不可預料的值。應當 char  *a,str[10];  a=str;  scanf(“%s”,a);
(5)指針變量的值是可以改變的,數(shù)組名雖然代表地址,但它的值是不能改變的。可以下標形式引用所指的字符串中的字符。
        如:main()
              {char  *a=“I love China.”;
               a=a+7; 
               printf(“%s”,a);  }
    又如:char str[]={“I love China.”};  str=str+7;  printf(“%s”,str); 是錯的
 (6)用指針變量指向一個格式字符串,可以用它代替printf函數(shù)中的格式字符串。也可以用字符數(shù)組實現(xiàn),但由于不能采用賦值語句對數(shù)組整體賦值。
     如:char  *format;  format=“a=%d,b=%f\n”;  printf(format,a,b);
  等價于:printf(“a=%d,b=%f\n”,a,b);
  也可以:char format[ ]=“a=%d,b=%f\n”; printf(format,a,b);

繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(0)
返回頂部