指针调用和返回指针之间的区别
Difference between call by pointer and returning pointer
在以下代码中通过指针调用或返回指针有什么区别吗?我只是尝试修改我的结构并获得 resutl。
免得说我有结构。
struct Address
{
const char* name; // "Jim Dandy"
int number; // 61
};
Address* Modifying2(Address* adr)
{
adr->name="Long John2";
return adr;
}
//or
void Modifying3(Address* adr)
{
adr->name="Long2 John2";
// return adr; no return
}
void print_addr2(const Address& r)
{
cout << r.name << 'n'
<< r.number << ' ' << r.street << 'n';
}
int main()
{
Address jd =
{
"Jim Dandy",
61
};
Address* jdPtr=&jd;
Modifying3(jdPtr);
print_addr(jdPtr);
//or
print_addr(Modifying2(jdPtr));
return 0;
}
结果是一样的,但哪一个更安全?我的意思是定义明确?
这两种方法都在做同样的事情。返回指针不是必需的。
但最安全的方法是通过引用传递值。(您尚未以这种方式实现)。这是你必须怎么做的
void Modifying4(Address &adr)
{
adr.name="Long2 John2";
}
在上面的示例中返回指针的唯一原因是如果要允许调用链接:
Modifying2(Modifying2(jdPtr));
对于这个特定的实现,这没有多大意义,因为该函数只是将值设置为常量。
在所有其他情况下,返回void
可能更可取,因为返回最初传入的指针不会获得任何好处。
没有真正的区别。两者都有效。
但要小心指针!如果分配的字符串长度大于 init 值,则必须重新分配指针指向的空间!!!
制造
在修改指针指向的值后返回指针是多余的。在现实世界中,其他人,比如我们,或者你公司的程序员同事,会花很多时间在你的代码上。
我忘了是谁说的,但你也会花90%的时间去浏览别人的代码。
如果我看到你的函数在工作中接受并返回一个指针,我会非常困惑你为什么要这样做,这似乎表明你缺乏对指针如何工作的理解以及为什么你会首先将指针传递给函数。
别这样。
相关文章:
- 在 const 函数中通过引用和指针返回之间的区别
- 空指针常量 (nullptr)、空指针值和空成员指针值之间有什么区别?
- 在 Rust 中,指针和引用有什么区别?
- 在以下声明中使用指针有什么区别?
- C++指针中的这两种类型的值分配有什么区别?
- 按值和引用传递指针之间的区别?
- printf() 和 std::cout 在指针方面的区别
- *++*++ppp,*++pp[1],*++(*(1+ppp)有什么具体的区别吗?(C/C++指针问题)
- 'new'和'='与指针的区别
- 使用指针向量和非指针向量有什么区别
- 函数指针和传递指针之间的区别
- C 中的通用指针和 C++ 中的通用指针有什么区别?
- 直接为浮点变量分配十六进制整数与通过指针转换分配之间的区别
- Fortran 中的指针和C++有什么区别
- 带"new"的指针和带"&variable"的指针有什么区别
- 指针声明和间接寻址之间的区别
- 在矢量的尖括号内使用指针符号与在外部使用指针符号有什么区别
- 在C++中,a+i 和 &a[i] 在指针算术方面有什么区别?
- ->运算符和指针 * 之间的区别 (C++)
- 当返回一系列字符或指针到char文字时的区别