校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > UI专业知识 > 色彩
题目

下列关于数组与指针的区别描述正确的是?

A.数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。

B.用运算符sizeof 可以计算出数组的容量(字节数)

C.指针可以随时指向任意类型的内存块。

D.用运算符sizeof 可以计算出指针所指向内容的容量(字节数)

解答

正确答案是 B

A.堆上创建动态数组
B.sizeof(数组名)就是数组的容量
C.const指针不可以
D. char* str = "hello"; sizeof(str)不能计算出内容的容量,只是指针的容量。
C 5条回复 评论
陈书言

资源还可以

发表于 2021-09-13 07:40:00
0 0
pyyyyy

测试真的是坑,啥都要会,一个项目要覆盖到方方面面,先是功能,再是自动化,每日构建,再是性能,再是安全,哎,小公司要你会的全,大厂要你的会的精还全,哎,真是太难了

发表于 2021-09-12 08:00:00
0 0
雨声敲敲

void f() { int* p=new int[5]; } 
这条短短的一句话就包含了堆与栈,看到new,我们首先就应该想到,我们分配了一块堆内存,那么指针p呢?他分配的是一块栈内存,所以这句话的意思就是:在栈内存中存放了一个指向一块堆内存的指针p。在程序会先确定在堆中分配内存的大小,然后调用operator new分配内存,然后返回这块内存的首地址,放入栈中,他在VC6下的汇编代码如下:
00401028 push 14h
0040102A call operator new (00401060)
0040102F add esp,4
00401032 mov dword ptr [ebp-8],eax
00401035 mov eax,dword ptr [ebp-8]

00401038 mov dword ptr [ebp-4],eax

也就是数组如果不是全局数组的话,一定是栈上,不过可能有个指针指向堆的内存(此时为动态数组)

发表于 2018-11-01 15:21:14
0 0
子不语

A. 堆上创建数组
C. char * const p; 指针常量
D. sizeof(指针) = 4

发表于 2018-11-01 15:20:43
0 0
遇见

数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。指针可以随时指向任意类型的内存块。

(1)修改内容上的差别

char a[] = “hello”;

a[0] = ‘X’;

char *p = “world”; // 注意p 指向常量字符串

p[0] = ‘X’; // 编译器不能发现该错误,运行时错误

(2) 用运算符sizeof 可以计算出数组的容量(字节数)。sizeof(p),p 为指针得到的是一个指针变量的字节数,而不是p 所指的内存容量。C++/C 语言没有办法知道指针所指的内存容量,除非在申请内存时记住它。注意当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。

char a[] = "hello world";

char *p = a;

cout<< sizeof(a) << endl; // 12 字节

cout<< sizeof(p) << endl; // 4 字节

计算数组和指针的内存容量

void Func(char a[100])

{

cout<< sizeof(a) << endl; // 4 字节而不是100 字节

}

发表于 2018-11-01 15:20:30
0 0