/*
*指針的應用,一般與數組、字符串聯繫的比較緊密。
*指針永遠存放的是地址;
*在內置類型、自定義的數據類型後面加上 * ---> 則這種類型爲地址類型,比如:int* 、char* ……
*/
#include <iostream>
using namespace std;
#include <cstring>
#include <string>
int main()
{
char str[] = "Love You Jin.J.P";
for(int i = 0; i != strlen(str); i++)
cout << str[i] ;
cout << endl;
//注意下面這兩種字符數組的結果相同嗎?爲什麼?
char ch[] = {'1','d','z','x','t','4'}; //得到的結果不是期望的,有亂碼
cout << ch << endl;
char ch1[7] = {'1','d','z','x','t','4'};
cout << ch1 << endl;
//不會通過p指針修改所指目標的數據,只能查看,即使該數據可以修改(其它途徑)"<=> char const* p"
const char* p = str; //"Love You Jin.J.P";
cout << p << endl;
//*p = 'P'; //error: assignment of read-only location ‘* p’
cout << *p << endl;
cout << &p << endl;
//r先是常量,再是指針,指向char ,且必須初始化,不能定義完後再對其賦值,r可對所指的目標數據進行修改
//error: uninitialized const ‘r’ [-fpermissive]
//error: assignment of read-only variable ‘r’
/*char* const r;
r = str;*/
char* const r = str;
cout << r << endl;
*r = 'P';
*(r+4) = '-';
cout << r << endl;
//warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
// 反對 轉換
//在輸出時,系統會先輸出sr 所指向的第一個字符,然後sr自動加1 ,指向下一字符,然後再輸出……直到遇到
//字符串結束標誌'\0'爲止。
char* sr = "Family!";
cout << sr << endl;
return 0;
}