字符串指針與一維數組指針的區別

字符串指針與一維數組指針有很多共同點,但也有一些區別:

1、賦值有要求。

  我們可以在程序中將一個字符串賦給一個字符串指針變量,但不可以將一個字符串賦給一個數組名。即:

允許:char *p; p = "I am a teacher !"; 但不可心: char a[20]; a = "I am a teacher!";這是因爲字符串指針變量本身是一個變量,而字符串代表了其首地址,因而賦值是理所當然的;但數組就不一樣,數組一旦定義後,數組在內存中的存儲單元即確定,數組名所代表的數組首地址即確定,它便不可改變,因而不可將一個字符串賦給數組名。

2、指針變量必須有明確的指向目標。

當指針變量定義後,程序中必須先確定其指向的目標,然後纔可對其目標變量賦值,融導致系統死機。如:char *p;

scanf("%s",p);這樣的程序很危險。因指針變量p被定義後,未確定其指向的目標,很有可能p的初值爲0,即指向內存地址爲0的一系列單元,便改變了系統程序,導致系統崩潰、死機。

3、存取字符串中的字符特別。

儘管字符數組和字符串指針變量有所不同,但可以相同的形式來存取字符串的字符,即以相同的方式來表示數組元素。如:char *p = "I am a teacher!";我們仍可用p[0],p[1]……依次表示字符I,a……等。

4、可靈活使用字符串指針變量。

由於字符串指針變量存儲字符串常量因而在字符串常量出現的地方可用一字符串指針變量來取代。如:

#include <stdio.h>

int main()
{
 char *format = "a = %d,b = %d/n";
 int a = 10,b = 20;
 printf(format, a, b);
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章