指針的簡單應用(一)

/*
 *指針的應用,一般與數組、字符串聯繫的比較緊密。
 *指針永遠存放的是地址;
 *在內置類型、自定義的數據類型後面加上 * ---> 則這種類型爲地址類型,比如: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;
}

 

 


 

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