c语言指针的问题 10
我想知道,c语言指针变量,这个指针变量也是像普通变量一样在内存开辟一块空间,然后把这个变量地址存放进去吗,还是说这个指针变量是个虚幻的东西?...
我想知道,c语言指针变量,这个指针变量也是像普通变量一样在内存开辟一块空间,然后把这个变量地址存放进去吗,还是说这个指针变量是个虚幻的东西?
展开
展开全部
并不是虚幻的东西,跟普通变量一样会开辟一块空间。里面存放的数据被当成了另外一块空间的地址。
比如:
int *A;
int B;
A = &B;
A 和 B本身实实在在会占用一块空间,在32位机上面,一般这个空间占四个字节。
A 所占空间的里面的数据当然就是四个字节,这四个字节的数据其意义是B的地址。 根据c语言语法。提取B里面的数据就有了 B 或者*A这两种方式。
比如:
int *A;
int B;
A = &B;
A 和 B本身实实在在会占用一块空间,在32位机上面,一般这个空间占四个字节。
A 所占空间的里面的数据当然就是四个字节,这四个字节的数据其意义是B的地址。 根据c语言语法。提取B里面的数据就有了 B 或者*A这两种方式。
追问
A 所占空间的里面的数据当然就是四个字节,那么A占多少个字节呢,是不是只能通过指针的指针才能知道呢?
展开全部
开辟空间了的
在编译器里定义一个指针变量,编译器会给这个指针变量分配一个空间,这个空间里存放的是一段内存的首地址,先解释一段内存,一段内存的大小是与你所定义的指针类型相关的,比如int,这段内存占四个字节(当然要看你的机器是多少位的了),则这段内存的首地址是第一个字节的地址,如char类型,占一个字节,这段内存的首地址就是这个字节的地址,还如结构体类型,此时内存大小要看该结构体的所有属性所占内存之和。现在解释这个空间,编译器给指针分配的空间大小是和CPU的寻址长度相关的,比如32位的CPU,它的寻址长度为32位,那么这个空间也就占四个字节,其实不管你定义什么样的指针类型,这个空间只是用来存地址,只占四个字节,而真正该空间所存的地址是哪一段内存的首地址才和所定义的指针类型相关。
在编译器里定义一个指针变量,编译器会给这个指针变量分配一个空间,这个空间里存放的是一段内存的首地址,先解释一段内存,一段内存的大小是与你所定义的指针类型相关的,比如int,这段内存占四个字节(当然要看你的机器是多少位的了),则这段内存的首地址是第一个字节的地址,如char类型,占一个字节,这段内存的首地址就是这个字节的地址,还如结构体类型,此时内存大小要看该结构体的所有属性所占内存之和。现在解释这个空间,编译器给指针分配的空间大小是和CPU的寻址长度相关的,比如32位的CPU,它的寻址长度为32位,那么这个空间也就占四个字节,其实不管你定义什么样的指针类型,这个空间只是用来存地址,只占四个字节,而真正该空间所存的地址是哪一段内存的首地址才和所定义的指针类型相关。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询