字符串常量
定義:在一個雙引號""內的字符序列或者轉義字符序列稱為字符串常量
例如:"HA HA!" "abc" "\n\t"
這些字符串常量是不能改變的,如果試圖改變指針所指向的內容是錯誤的
因為字符串常量是存在靜態內存區的,不可以改變的。
如定義字符串常量:
char* a="i love you.";
*a='h'; //試圖改變它
這是錯誤的。系統顯示:
string.exe 中的 0x00d71398 處未處理的異常: 0xC0000005: 寫入位置 0x00d7573c 時發生訪問沖突或者報該內存不能為written。
字符串變量
在C語言中沒有純粹的c語言字符串變量,可以通過一個字符數組來體現,這樣就
可以對字符數組中的內容進行改變!如上式可改為。
如定義字符串變量:
char a[]="i love you.";
*a='h';
/**
*字符串常量
*程序將會報錯,不能改變字符串常量值。
*修改失敗
**/
#include <stdio.h>
#include <stdlib.h>
void main()
{
char *str = "abcdef";
printf("%s,%p\n", str,str);
*str = 'C'; //修改第三個字符為大寫
printf("%s,%p\n", str);
}
/**
*字符串變量
*程序將改變字符串變量中其中的值。
*修改成功
**/
#include <stdio.h>
#include <stdlib.h>
void main()
{
char str[] = "abcdef";
char *p_str = str;
printf("%s\n", p_str);
*(p_str+2) = 'C'; //修改第三個字符為大寫
printf("%s\n", p_str);
}
小結:
字符串常量:不能對值修改。 常量:"abc" 、123、char *str = "abcdef"、"\n"
字符串變量:能對值修改 。 變量:char c = "a"、char arr[] = "abc"
