int * const ptr = &x; // ptr 是 constant,*ptr 和 x 不是constant。
int x=10, y=12; int * const ptr = &x; //ptr = &y; // 此行會出錯,ptr 是唯讀的,不能重新指派一個新的記憶體位址 *ptr = 50; x = 60; printf("*ptr = %d \n", *ptr); // *ptr = 60 printf("x = %d \n", x); // x = 60
範例 2:
const int * ptr = &x; // ptr 不是 constant,*ptr 是 constant,但 x 不是。
(也可寫成:int const * ptr = &x;)
我覺得*ptr 是 const,但 x 不是,蠻特別的,也就是不能經由 *ptr 修改 x 的值,但可直接對 x 的值重新指派修改。
如以下範例所示。
int x=10; const int * ptr = &x; // *ptr = 50; // 此行會出錯,*ptr 是唯讀的 x = 60; // 雖然 *ptr 是唯讀,但 x 不是 printf("*ptr = %d \n", *ptr); // *ptr = 60 printf("x = %d \n", x); // x = 60
範例 3:
const int * const ptr = &x; // ptr 是 constant,*ptr 是 constant,但 x 不是。
(也可寫成:int const * const ptr = &x;)
int x=10, y=12; const int * const ptr = &x; //ptr = &y; // 此行會出錯,ptr 是唯讀的 //*ptr = 50; // 此行會出錯,*ptr 是唯讀的 x = 60; printf("*ptr = %d \n", *ptr); // *ptr = 60 printf("x = %d \n", x); // x = 60
沒有留言:
張貼留言