【不是惡夢的開始,而是再度的精進。】

 

這是我在練習指標變數取址的時候所發生問題,看一下簡單的程式碼


 
#include <iostream>

 using namespace std; 
 
int main(int argc, char** argv)
{
    int a = 5;
    char b = 'f';
    int* ptr;
    
    ptr = &a;
    cout << "\n變數a的位址為: " << ptr;
    ptr = &b;       
// 問題出在這裡
    cout << "\n變數b的位址為: " << ptr;
   
    return 0;
 } 

 
 
打好程式碼後編譯,卻發生問題了


仔細的看一下程式碼,我設指標變數時是設為整數型態
int* ptr;
然而卻讓數值型的指標變數取字元型的變數位址
char b = 'f';

ptr = &b;
所以就 cannot convert 'char*' to 'int*' in assignment
賦值失敗

 


這讓我聯想到如果把字元賦值給數值變數會怎麼樣呢?
int a = 5;
a = 'A';
cout << "\n\na=  " << a; 

可以編譯成功,沒有警告或編譯錯誤訊息

輸出結果:
a=  65
65是字元'A'的十進制掃描碼

 

 

那....再試一次字串"A"

int a = 5;
a = "A";
cout << "\n\na=  " << a; 


編譯錯誤:
[Error] invalid conversion from 'const char*' to 'int' [-fpermissive]

 

因為左右單引號所括住著是字元,字元可以轉換成數值,左右雙引號括住的是字串,字串就不能轉換成數值了,所以  int a; 就無法賦值字串 "A"


 

 

 

延伸閱讀

 

[做中學 dev c++] dev c++

 

[伊蒙 dev c++] 視窗程式學習筆記

.

arrow
arrow
    全站熱搜

    伊蒙‧普羅客 發表在 痞客邦 留言(0) 人氣()