MS笔试中的一个关于函数返回的“小”题

Which of following C++ code is correct ?

A.

int f()
{
    int *a = new int(3);
    return *a;
}

B.

int *f()
{
	int a[3] = {1,2,3};
	return a;
}

C.

vector<int> f()
{
	vector<int> v(3);
	return v;
}

D.

void f(int *ret)
{
	int a[3] = {1,2,3};
	ret = a;
	return ;
}

这题考察的是程序中的内存分配,A中指针a是位于栈上,a指向的内存位于堆中,能够返回整型但是会有内存泄露。

B中数组a为栈上数据,函数返回后自动释放,故返回a指针不能返回数组数据。

C中返回的的是向量,过程实际上是通过临时变量拷贝到指定的变量中,正确。

而D错误与B类似。

总结一句,基础不牢,地动山摇。

时间: 2024-10-07 13:41:21

MS笔试中的一个关于函数返回的“小”题的相关文章

Python函数中的变量和函数返回值

1.函数的变量 局部变量和全局变量: Python中的任何变量都有特定的作用域 在函数中定义的变量一般只能在该函数内部使用,这些只能在程序的特定部分使用的变量我们称之为局部变量 在一个文件顶部定义的变量可以供文件中的任何函数调用,这些可以为整个程序所使用的变量称为全局变量. def fun(): x=100 print x fun() x = 100 def fun(): global x   //声明 x +=1 print x fun() print x 外部变量被改: x = 100 de

Python函数中的变量和函数返回值的使用实例

1.函数的变量 局部变量和全局变量: Python中的任何变量都有特定的作用域 在函数中定义的变量一般只能在该函数内部使用,这些只能在程序的特定部分使用的变量我们称之为局部变量 在一个文件顶部定义的变量可以供文件中的任何函数调用,这些可以为整个程序所使用的变量称为全局变量. def fun(): x=100 print x fun() x = 100 def fun(): global x //声明 x +=1 print x fun() print x 外部变量被改: x = 100 def

实战c++中的string系列--函数返回局部变量string(引用局部string,局部string的.c_str()函数)

当函数返回字符串的时候,我们可以定义返回string和string&. 1写一个返回string引用的函数 std::string & TestStringReference() { std::string loal_str = "holy shit"; return loal_str; } 这个函数当然是错误的,编译器会提示我们: 返回局部变量或临时变量的地址: loal_str 即不能返回局部变量的引用. 2写一个返回string的函数(函数返回局部变量string

sql中出入一个list,返回一个list

-----------传入数组------返回list<string>---------- String[] sendPersonIdArr = sendPersonId.split(","); List<String> list = staffInfoService.ListPhonesByIds(sendPersonIdArr); <!-- 通过userIds查询员工的电话--> <select id="ListPhonesByI

关于js中全局变量和局部变量的寄到小题

往往最基本的也是最根本的. 这里有三道关于全局变量和局部变量的小题,供诸位一阅. 知识点: (1)在最外层声明的是全局变量 (2)在函数内声明的是局部变量 (3)在函数体内部,但是没有用var声明的变量也是全局变量 第一题: var a = 10;function fun(){var a = "global";}console.log(a); 第二题: var a ;function fun(){a = "global";} fun();console.log(a)

MySQL 如何在一个语句中更新一个数值后返回该值 -- 自增长种子竞态问题处理

什么是竞态问题? 假设有一个计数器,首先当前值自增长,然后获取到自增长之后的当前值.自增长后的值有可能被有些操作用来当做唯一性标识,因此并发的操作不能允许取得相同的值. 为什么不能使用使用UPDATE语句更新计数器,然后SELECT语句获取自增长后的当前值?问题在于并发的操作有可能获取到相同的计数器值. CREATE TABLE counters ( id INT NOT NULL UNIQUE, -- 计数器ID,多个计数器可以存在一个表中, value INT -- 计数器当前值 ); --

&lt;笔试&gt;&lt;面试&gt;编写一个排序函数,实现,既可以排序整形数组,又可以排序字符串。

思路:仿照qsort函数运用函数指针实现排序整形数组.排序字符串的功能. 首先,编写整形数组比较函数和字符串比较函数:其次,仿照qsort函数将首元素地址.元素个数.元素大小.比较函数 传参编写熟悉的冒泡排序函数:最后,举例验证函数正确性. /******************************/ //1.编写冒泡排序,可以排序整形数组,也可以排序字符串. #include<stdio.h> #include<stdlib.h> #include<assert.h&g

JDBC中如何获取SUM函数返回的结果

代码如下: 1 ResultSet rs = stmt.executeQuery("SELECT sum() from...."); 2 int keyValue = -1; 3 if (rs.next()) { 4 keyValue = rs.getInt(1); 5 } rs.getInt()里面的参数也可以是字段名, 比如: rs.getInt("pNum");

在JS中,一个自定义函数如何调用另一个自定义函数中的变量

function aa1511() { var chengshi="马鞍山"; var shengfen="安徽省"; return shengfen+"@"+chengshi; } function xialachaxun() { var hanshu=aa1511().split("@"); alert(hanshu[0]+','+hanshu[1]); }