处女贴!新手自学C遇到一点难题!请高手指点!!
只有非常量数据的地址才可以付给普通的指针:
double rates[5] = {88.99, 100.12, 59.45, 183.11, 340.5};
const double locked[4] = {0.08, 0.075, 0.0725, 0.07};
double *pnc = rates; //合法
pnc = locked; //非法
pnc = &rates[3]; //合法
这样的规矩是合理的。否则,你就可以使用指针来修改被认为是常量的数据
这是c primer plus书上266页的
以下是我自己加的
2 #include <stdio.h>
3
4 int main(void)
5 {
- 6 double rates[5] = {88.99, 100.12, 59.45, 183.11, 340.5};
- 7 const double locked[4] = {0.08, 0.075, 0.0725, 0.07};
8
9
- 10 double *pnc = rates; //合法
- 11 printf("*pnc = %d\n", *pnc);
12
- 13 pnc = locked; //不合法
- 14 printf("*pnc = %d\n", *pnc);
15
- 16 pnc = &rates[3]; //合法
- 17 printf("*pnc = %d\n", *pnc);
18
- 19 return 0;
20
- 21 }
以下是程序最终输出的结果
*pnc = 687194767 *pnc = 1202590843 *pnc = 51536076
1.我的问题是
printf("*pnc = %d\n", *pnc); 这句应该是输出*pnc = 88.99为什么结果却是*pnc = 687194767 ?
而我在调试的时候里面的至确实是88.99 这是调试的数据 pnc = (double *) 0x22ff10 *pnc = (double) 88.9999999999995
2.第二歌就给我解释下下面这句书上我看不明白
13 pnc = locked; //不合法
希望有经验的给破个处!!