关于结构体类型指针的问题
struct a{int b; char c;}; struct a *p; 没有定义结构体的变量的情况下,这个指针占了5个字节的内存空间吧? 为什么这个指针是没有地址的? 或没有这个结构体的首地址?
struct a *p;
当然不是5个字节(这个是指针的基础了)
而是4个或8个字节(编译器有关,32位编译器是4个,64位的8个)
p就是指针,而指针占的空间与类型无关的(编译器有关)
且这个指针也不能说没有地址,而只能说它是“野指针”
它的值是不确定的(与运行环境有关),而它本身当然是有地址,且是一个有效的地址(也就是&p是有效的内存地址)
C的指针部分,最有关的是计算机原理,若是对CPU内部的运行机制(汇编语言)很了解的话,学习指针是没难度的,否则纯用c语言理解,不是不可以,但的确比较难
热门标签: