gpt4 book ai didi

c++ - 编译器警告 re : references to local variables

转载 作者:太空狗 更新时间:2023-10-29 21:05:21 25 4
gpt4 key购买 nike

所以,我有这两个函数ref()pointy()分别创建本地引用和指向本地定义的 int 的指针:

#include <iostream>

int& ref() {
int knuckles = 6;
int &chuckles = knuckles;
return chuckles;
};

int* pointy() {
int buckles = 8;
return &buckles;
};

int main(int argc, char **argv) {
int a = ref(), *b = pointy();
int c = 14, d = 20;
std::cout << a << ' ' << *b << ' ' << c+d;
};

代码编译正常,并给出关于返回局部变量地址的警告 buckles ,但令我担心的是它没有说明任何关于 ref() 的内容返回对 knuckles 的引用.我的编译器(g++ 通过 MinGW,如果它有所作为)只是在 sleep 吗?是否有关于引用的内容可以防止引用对象超出范围?还是我的引用语法不好?

非常感谢!

最佳答案

您的两个测试用例不是平行的。这个程序:

#include <iostream>

int& ref() {
int knuckles = 6;
return knuckles;
};

int* pointy() {
int buckles = 8;
return &buckles;
};

int main(int argc, char **argv) {
int a = ref(), *b = pointy();
int c = 14, d = 20;
std::cout << a << ' ' << *b << ' ' << c+d;
};

产生这些警告:

$ g++ -O4 -std=c++0x    x.cc   -o x
x.cc: In function ‘int& ref()’:
x.cc:4:7: warning: reference to local variable ‘knuckles’ returned [enabled by default]
x.cc: In function ‘int* pointy()’:
x.cc:9:9: warning: address of local variable ‘buckles’ returned [enabled by default]

关于c++ - 编译器警告 re : references to local variables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10109795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com