2013-10-04 27 views
0

考慮以下幾點:const是否適用於傳遞給函數的所有參數?

void abc(const int*, int*); 
int x = 1; 
int y = 2 
abc(&x, &y); 

不知道ABC的()的定義,反正是有了解的執行行3後x和y的值是什麼?

這就是我認爲是內部ABC()真實,

x是一個常量指針指向一個int,因此被指出不能改變的價值,但使得x點可以是地址改變。 這是正確的嗎?

另外,函數頭中的const是否僅適用於第一個參數?或者它適用於兩者?

+0

你可以用'std :: is_same'來回答你題目的問題。 – chris

+0

[相關問題](http://stackoverflow.com/questions/1143262/what-is-the-difference-between-const-int-const-int-const-int-const),如果不重複 – ajp15243

+0

「const適用於傳遞給函數的所有參數?「 - 沒有。那將是一場災難。 – 2013-10-04 04:37:05

回答

1
void abc(const int* a, int *b) 
{ 
    *a = 1; // error - not allowed, *a is const 
    a = b; // allowed, a is non-const 
    *b = 1; // allowed, *b is non-const 
    b = a; // error - not allowed, can't assign non-const pointer to a const pointer 
    int c; 
    b = &c; // allowed 
} 
0

x是一個常數指針指向一個int,因此該X點到CAN ,其指向不能改變值 但該地址被改變。那是對的嗎?

您從右向左讀取類型。所以第一個參數是一個指向整數常量的指針,第二個參數是一個指向整數的指針。所以我會重寫你的語句爲: x是一個指向const int的指針,因此指向的值不能改變,因爲它是一個const。

另外,函數頭中的常量是否僅適用於第一個參數 ?或者它適用於兩者?

該const適用於第一個參數,而不適用於第二個參數。他們完全獨立於對方。

1

不知道abc()的定義,是否有知道 第3行執行後x和y的值是什麼?

當然。閱讀文檔。

相關問題