【发布时间】:2013-11-20 07:37:58
【问题描述】:
我刚刚开始学习 c 中的指针。我有以下几个疑问。如果我找到以下问题的答案。理解c中指针的概念对我来说非常有用。提前致谢。
我)
char *cptr;
int value = 2345;
cptr = (char *)value;
(char *) 的用途是什么,在上面的代码 sn-p 中是什么意思。
ii)
char *cptr;
int value = 2345;
cptr = value;
这也编译没有任何错误。那么i和ii代码sn-p之间的区别是什么
iii) &value 是变量的返回地址。它是RAM中的虚拟内存地址吗?假设另一个 c 程序并行运行,该程序是否可以具有与&value 相同的内存地址。每个进程是否可以拥有与其他进程相同的重复内存地址并且相互独立?
iv)
#define MY_REGISTER (*(volatile unsigned char*)0x1234)
void main()
{
MY_REGISTER=12;
printf("value in the address tamil is %d",(MY_REGISTER));
}
上面的sn -p 编译成功。但它输出分段错误错误。我不知道我在做什么错误。我想知道如何使用指针访问随机地址的值。有什么办法吗?程序真的会有地址 0x1234 吗?
v)printf("value at the address %d",*(236632));//consider the address 236632 available in
//stack
为什么上面的printf语句会报错?
【问题讨论】:
-
第五点,“语句失败”是什么意思?
-
第一个问题有错字;声明了
cptr,但使用了ptr。 -
删除了 3 个与问题无关的标签。