[問題] 宣告const的變數不是不能改值嗎?
如題,一個簡單的小程式如下:
#include<stdio.h>
#include<stdlib.h>
int main()
{
const int score = 59;
int *ptr;
ptr = (int *)&score;
printf("1. %d %d\n",score,*ptr);
printf("2. %p %p\n",&score,ptr);
(*ptr) = 100;
printf("3. %p %p\n",&score,ptr);
printf("4. %d %d\n",score,*ptr);
system("pause");
return 1;
}
結果:
1. 59 59
2. 002DFCD4 002DFCD4
3. 002DFCD4 002DFCD4
4. 59 100
這是怎麼一回事呢? 指標位置跟score的位置顯示是相同記憶體位置,
但是卻會允許ptr改值? 且ptr指的值還可以跟score不一樣?
請各位不吝指點! 感謝各路英雄好漢!謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.144.17
推
01/13 20:10, , 1F
01/13 20:10, 1F
推
01/13 20:11, , 2F
01/13 20:11, 2F
推
01/13 20:23, , 3F
01/13 20:23, 3F
推
01/13 20:38, , 4F
01/13 20:38, 4F
推
01/13 20:50, , 5F
01/13 20:50, 5F
→
01/13 21:12, , 6F
01/13 21:12, 6F
→
01/13 21:13, , 7F
01/13 21:13, 7F
→
01/13 21:13, , 8F
01/13 21:13, 8F
→
01/13 21:15, , 9F
01/13 21:15, 9F
→
01/13 22:33, , 10F
01/13 22:33, 10F
推
01/13 22:36, , 11F
01/13 22:36, 11F
推
01/13 22:41, , 12F
01/13 22:41, 12F
推
01/14 01:25, , 13F
01/14 01:25, 13F
推
01/14 01:28, , 14F
01/14 01:28, 14F
推
01/14 01:31, , 15F
01/14 01:31, 15F
→
01/14 09:30, , 16F
01/14 09:30, 16F
→
01/14 09:31, , 17F
01/14 09:31, 17F
→
01/14 15:04, , 18F
01/14 15:04, 18F
推
01/18 12:08, , 19F
01/18 12:08, 19F