Linux C\C++基礎 字符數組、字符串和字符串常量


1.字符數組和字符串

  • C語言沒有字符串類型,用字符數組模擬
  • 字符串一定是字符數組,字符數組不一定是字符串
  • 如果字符數組以字符'\0'('\0'等同與數字0)結尾,那么這個字符數組就是字符串
char a[]={'a','b','c'};//字符數組,不要指定大小,否則會添加0,變成字符串
char b[10]={'a','b','c'.'\0'};//字符串
char c[10]={'a','b','c',0};//字符串

2.初始化

  1 include<stdio.h>
  2 
  3 int main() 4 
  5 { 6     
  7       char a[]={'a','b','c'}; 8       printf("a=%s\n",a);//打印,亂碼,沒有結束符
  9       return 0; 10 }   
  • 常用的初始化,使用字符串初始化,在字符串末尾自動加結束符數字0
  • 這個結束符,用戶看不到(隱藏)
  •  char a[10],最大寫9個字符,留一個位置放結束符
  • sizeof()測試數據類型的大小,不會因為結束符提前結束
char a[10]="abc";

打印長度

 

3.字符串常量

  • 每個字符串都是一個地址,這個地址是指字符串首元素地址
  • 字符串常量放在data區,文字常量區
  • 字符串常量,文字常量區的字符串,只能讀,不能修改

 

  1 #include<stdio.h>                                                                                          
  2 void fun() 3 { 4       printf("fun s1=%p\n","hello world"); 5 } 6 int main() 7 
  8 { 9       //所有的hello world都代表一個地址,所以下面打印應該一樣
 10       printf("s1=%s\n","hello world"); 11       printf("s1=%p\n","hello world"); 12       printf("s1=%s\n","hello world"+1); 13 fun(); 14       //字符常量就是此字符串的首元素地址,所以可以賦值個指針
 15       char *p="hello world"; 16       printf("p=%p\n",p); 17       return 0; 18 }

 

 4.字符串常量初始化字符指針和字符數組的區別

char *p="hello"; char buf[]="hello";
  •  p指針保存le"hello"的地址
  • 指針所指向的內存不能修改
  • 把“hello"一個一個字符放在buf數組中
  • 數組的元素可以修改

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM