C语言定义指针时内存问题

C指针占4个字节。①short *p=NULL,表示从起始地址往后取2个有效字节,那么问题来了,这里的指针p占多少个字节?②double *p=NULL,表示从起始地址往后取8个字节,而指针只占4个字节,那么问题来了,这样会不会造成取址越界?

指针不管什么类型,都是只占据4字节--------------是因为指针存储的是地址,类似于0x101 这样的地址值。short 是2个字节、double 是8个字节没错,但存储一个short或double类型变量 的地址值,都需要4个字节,就是存 0x101 这样的地址值。

只知道指针不管什么类型,都是只占据4字节,还是针对不同的平台而言~无能为力,个人觉得不会越界的吧-感觉无关

在32位的机器中 指针是占用4个字节。
1、你列出的 short 和 double 是说这个指针指向的数据类型是 short 类型 和double 类型
2、你并没有对该指针实际分配内存,不能直接使用。如果你通过取地址的方式获取double类型的一个完整数据,会把数据截断的。

现在基本上不管是32位还是64的机器,你用sizeof(viod *p)查看指针占用字节数,一半都只是4个字节,因为现在的编译器基本上都为了兼容都只占用4个字节

这个不关越界的事情吧,你定义的短整型指针本来就有它自己的地址,它也是一个变量,只是说NULL让它不存任何地址,指针本来就是用来存地址的,不管定义什么类型,都只占用固定的字节,double占用8个字节,但是定义的指针只是存储了所指向变量的首地址,所以和变量是什类型也没有关系,也就是说存储的是变量的第一个字节的地址