我尝试Ubuntu的终端概念在C指针不明确
int main() {
int y = 10;
int *int_ptr;
int_ptr = (int *) y;
}
我分配在program.I这些代码想知道有关的步骤说明正确执行上面的代码的代码。在最后一行代码中,如果它是int_ptr =&y; 我没有问题,但与我的代码我没有得到我指向int_ptr指针。
我尝试Ubuntu的终端概念在C指针不明确
int main() {
int y = 10;
int *int_ptr;
int_ptr = (int *) y;
}
我分配在program.I这些代码想知道有关的步骤说明正确执行上面的代码的代码。在最后一行代码中,如果它是int_ptr =&y; 我没有问题,但与我的代码我没有得到我指向int_ptr指针。
int *int_ptr;
int_ptr
是指存储int
类型的变量的地址。 要获取变量说的地址int t
您需要使用&运算符。 但通过做你刚刚做的你刚刚分配的整数10到int_ptr
。
当你声明变量说
int x = 34;
有两样东西在作怪:
要通过指针访问x
,您需要第一个值。
用最后一行,你分配给int_ptr地址0x0000000A。 因此,对于* int_ptr,您正在读取地址存储在0x0000000A处的内存块。
发布代码时发生错误,但会投标(int *)
正在遮罩它。
你应该好好y
的地址,使int_ptr
点y
:
int main(void) {
int y = 10;
int *int_ptr;
int_ptr = &y;
}
使用转换,你是在告诉你知道你在做什么,编译器和真要到转换值的y
作为地址int
存储到int_ptr
。如果没有转换,编译器应该发出警告,告诉您可能发生的编程错误。
你明白'y'和'&y'的区别吗? –
阅读一本关于'C'的好书 – dlmeetei
我们不是老师,在线免费学习基础C课程。 –