主题:[原创]SOS国际求救:指针问题
BlackBlizzard
[专家分:50] 发布于 2006-07-22 00:31:00
[em14]#include <stdio.h>
#define Lucky_Number 777
int main()
{
int *p=Lucky_Number;
printf("Is this my lucy_number? %d\n",*p);
return 0;
}
编译不怎么不通过呢?
是不是int *p=Lucky_Number;有问题?
回复列表 (共11个回复)
沙发
fwjmath [专家分:80] 发布于 2006-07-22 09:56:00
难道需要:
int *p=&Lucky_number; ?
或者分开写吧~~~
int *p;
p=&Lucky_number;
板凳
rickone [专家分:15390] 发布于 2006-07-22 15:51:00
#include <stdio.h>
#define Lucky_Number 777
int main()
{
int *p=(int*)Lucky_Number;
printf("Is this my lucy_number? %d\n",*p);
return 0;
}
看错误信息,不过这样改运行时有错误。
3 楼
euc [专家分:4310] 发布于 2006-07-22 18:02:00
常量怎么可能有地址- -
4 楼
fwjmath [专家分:80] 发布于 2006-07-22 20:16:00
常量来的吗?我还以为是变量呢~~~
5 楼
BlackBlizzard [专家分:50] 发布于 2006-07-23 23:18:00
副版,你能不能说的更清楚一点~
常量没有地址?
6 楼
rickone [专家分:15390] 发布于 2006-07-24 00:27:00
常量,在程序运行的时候是以‘立即数’的形式存在在‘代码’里的,它不用到内存中去找,那么,何来地址?
常量名只有高级语言里存在,在编译的时候不存在了。
7 楼
海上飞洪 [专家分:520] 发布于 2006-07-24 10:23:00
那是不是不能这样编
8 楼
BlackBlizzard [专家分:50] 发布于 2006-07-24 21:12:00
[quote]常量,立即数?能不能在详细说明以下“立即数”[em14]
9 楼
skybtone [专家分:160] 发布于 2006-07-25 10:35:00
允许有的,在这里printf("Is this my lucy_number? %d\n",*p);
应该写成printf("Is this my lucy_number? %d\n",p);
这里要区分scanf("%d",&p)和printf("%d",p)
我运行试过了,感觉int *p=(int*)Lucky_Number;
写成int p=(int*)Lucky_Number;一样的效果,不怎么理解
10 楼
skybtone [专家分:160] 发布于 2006-07-25 10:38:00
立即数是汇编语言里的一个名词,就是一个给定数,直接拿来用,没有地址:MOV AL,09H.这里09H是立即数.它没有放在存储器里,也没有放在寄存器里,也就是没有地址.
我来回复