回 帖 发 新 帖 刷新版面

主题:[原创]SOS国际求救:指针问题

[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个回复)

沙发

难道需要:
int *p=&Lucky_number;   ?
或者分开写吧~~~
int *p;
p=&Lucky_number;

板凳

#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 楼

常量怎么可能有地址- -

4 楼

常量来的吗?我还以为是变量呢~~~

5 楼

副版,你能不能说的更清楚一点~
常量没有地址?

6 楼

常量,在程序运行的时候是以‘立即数’的形式存在在‘代码’里的,它不用到内存中去找,那么,何来地址?

常量名只有高级语言里存在,在编译的时候不存在了。

7 楼

那是不是不能这样编

8 楼

[quote]常量,立即数?能不能在详细说明以下“立即数”[em14]

9 楼

允许有的,在这里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 楼

立即数是汇编语言里的一个名词,就是一个给定数,直接拿来用,没有地址:MOV AL,09H.这里09H是立即数.它没有放在存储器里,也没有放在寄存器里,也就是没有地址.

我来回复

您尚未登录,请登录后再回复。点此登录或注册