#include <stdio.h>
int j;
int *ptr;
int main(void)
{
j = 13232323;//adress I want to assign
ptr = j;//assign the adress to the pointer
printf("%d",ptr);
}
Run Code Online (Sandbox Code Playgroud)
OUTPUT:13232323
我是否错误地将地址直接分配给指针?指针不过是一个变量包含地址的形式价值,所以我构建了一个地址,然后将其分配给指针,它的作品,因为它应该是,但我不能构建包含字符ABCDEF地址,那么,什么是int和指针之间的最大区别?
编辑:此代码仅代表测试目的
实际上你的尝试是出于你的渴望.我同意,我经常这样做.
第一件事情是,如果你存储13232323在一个指针变量,它的十六进制值OXC9E8C3,所以真的在你指定变量的指针(PTR)不列入知道是否真的是一个有效的地址或无效地址的时间.但是当你取消引用这个地址时*ptr,就会出现问题.它试图在地址中寻找价值.然后有2个案例..
因此,即使您的程序编译,运行,直到并且除非您在ptr.中存储有效地址,否则无用ptr.
你的问:除了我不能构造一个包含字符ABCDEF的地址外,它的工作原理是什么,所以,int和指针之间的区别是什么?的printf( "%d",PTR);
我想你问,无论如何,我都无法存储ABCDEF,因此ptr工作方式相同int type,那么整数和指针有什么区别?
这里是 :
%d,尝试使用%x或打印%p.您是否注意到编译器警告,warning: assignment makes pointer from integer without a cast因为ptr = j;它ptr是int*类型的,并且j是int 类型的.