刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

面试题

在64位系统下,请阐述以下两个表达式的含义以及它们对应的内存大小:*p=NULL 和 *p=new char[100],并解释 sizeof(p) 的值是什么?

使用微信搜索喵呜刷题,轻松应对面试!

答案:

解答思路:

这个问题涉及到指针、动态内存分配以及sizeof操作符的使用。在64位系统下,我们需要理解指针变量的大小以及如何通过指针进行内存分配。

  1. 对于"*p=NULL",我们需要理解指针变量的大小,而不是它所指向的内存空间的大小。在64位系统中,指针的大小是固定的,通常为8字节。因此,"*p=NULL"时,p指向的地址值为0,但指针变量p本身的大小是固定的8字节。

  2. 对于"*p=new char[100]",这里涉及到动态内存分配。当我们使用new关键字分配一个字符数组时,系统会为该数组分配100字节的内存,并返回这块内存的首地址,然后我们将这个地址赋值给指针变量p。因此,p所指向的内存空间大小为100字节。而指针变量p本身的大小仍然是8字节。

  3. "sizeof(p)"的含义是获取指针变量p的大小,而不是它所指向的内存空间的大小。在64位系统下,指针变量的大小为8字节。

最优回答:

在64位系统下:

  1. 当*p=NULL时,p的大小是8字节(因为指针大小固定),而它所指向的内存地址为0。
  2. 当*p=new char[100]时,p所指向的内存空间大小为100字节(因为分配了一个大小为100字节的字符数组),而p本身的大小仍然是8字节。
  3. sizeof(p)的值为8字节,获取的是指针变量p的大小,而不是它所指向的内存空间的大小。

解析:

sizeof操作符:这是一个编译时操作符,用于获取数据类型或变量在内存中的大小。对于指针,sizeof返回的是指针变量本身的大小,而不是它所指向的内存空间的大小。

动态内存分配:C++中的new关键字用于动态分配内存。当我们使用new分配一个数组时,系统会为该数组分配连续的内存空间,并返回这块内存的首地址。需要注意的是,使用new分配的内存需要在程序结束时通过delete关键字手动释放,否则会造成内存泄漏。

指针和地址:指针是一个变量,它存储了另一个变量的地址。通过指针,我们可以间接访问该变量。在64位系统中,指针的大小通常为8字节。

创作类型:
原创

本文链接:在64位系统下,请阐述以下两个表达式的含义以及它们对应的内存大小:*p=NULL 和 *p=new

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share