字符串的定與輸入輸出的情況

字符串字面量,又叫字符串常量(string constant)

字符串常量屬於靜態存儲類型(static storage class),被雙引號括起來的內容被視爲一個指向字符串存儲位置的指針,類型於數組名作爲數組的地址

tips:

  1. 用雙引號括起來的字符串可以被視爲一個指針
  2. 如果兩個字符串中間沒有間隔或只有空格,那將被視爲串聯起來的一個字符串
  3. 數組的元素如果未被使用,會被自動初始化爲null character(’\n’)
  4. 數組名爲常量,可被視爲字符串的首地址;但數組的元素是變量。指針名是變量(聲明爲 const 時另算)
  5. 遞增遞減(++x;–x)只能用於變量,不能是不可修改的常量
  6. 字符串初始化數組的時候,有兩個存儲地點,一個在靜態存儲區中,一個在數組中
  7. 如果打算修改字符串,不要使用指針,因爲它無法被改變
  8. 記住,要爲定義的指針初始化,不然指針可能會指向任何地方

例:

#include<stdio.h>
int main(void)
{
    char coco[]="hello, this"" is a" "detail!";   //可以讓編譯器爲我們計算數組的大小
    puts(coco);	// puts 函數會自動添加一個換行符
    
    char *cho = "Gets function was delete in the new standard.";  //這個其實就是 const char *cho,只是編譯器默認可以這麼寫,所以指針指向的內容不能被改變
	printf("%s %c\n","Now,you could use it.", *"Now,you could use it.");  //被雙引號括起來的內容被視爲一個指針,指向字符串的首地址
	
	coco[12] = 'z'; // cho[12]='z'是不行的,前面說過,這是錯誤的.

    fputs(coco, stdout);  // fputs函數一般和fgets函數(puts函數)配用,但兩者的區別在於會不會爲打印輸出的字符串自動加上一個換行符
    printf("\n");	// fputs函數不會自動加上換行符,所以這裏加上
    
    printf("%p %p", cho, "Gets function was delete in the new standard.");  //這兩個形式都是相同的,指針指向了字符串的首字符的地址
    return 0;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章