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

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

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

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

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

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

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