【问题标题】:Question on reuse of pointers after passing to functions关于传递给函数后指针重用的问题
【发布时间】:2010-10-26 01:29:32
【问题描述】:

那么,当我将const char * 传递给函数一次时,我可以再次使用它吗?它似乎最终向我吐出废话。

const char *config_file = "file.txt";

function(int x, config_file);
cout << "Number" << x;


secondfunction(int y, config_file);

我需要创建另一个指向 config_file 的指针吗?

如果是这样,我该怎么做?

谢谢!

【问题讨论】:

  • 这与结构合理的代码相去甚远,因此很难确定 (1) 它应该做什么和/或 (2) 它做什么。一个演示问题的最小程序(看起来可能有 12 行代码)并解释它应该做什么会很有帮助。
  • 这很混乱,我看不到config_file在哪里使用,所以没有办法回答你的问题。
  • +1 很少见到带有描述性、准确标题的 SO 问题。
  • 虽然,关于标签:不要仅仅因为你的问题中有指针和函数就使用“function-pointers”标签。同样,使用标签“return-value”,因为您的某些函数返回值可能是错误的描述。
  • 我试图在不改变问题含义的情况下稍微清理一下(我没有接触过代码,因为很难说出你实际上在做什么)。如果我弄错了,您可以修复它或发表评论,解释我是如何弄错的,我会再试一次。

标签: c++ function pointers constants


【解决方案1】:

不,你可以使用它就好了。尽管您提供的代码无法编译,但我想我理解您的要求。

类似的代码段:

const char *x = "Hello";
fnA (x);
fnB (x);

应该没问题。

如果您发现 fnB 没有达到预期效果,那么:

  • fnA 正在改变 x 指向的内容(通常不可能,因为它是 const char *);或
  • 一些未显示的代码正在改变指针本身;或
  • 内存正在损坏。

试试这个代码作为例子:

#include <iostream>
#include <iomanip>

static void fnA (const char *a) {
    std::cout << "fnA: [" << a << "]" << std::endl;
}
static void fnB (const char *b) {
    std::cout << "fnB: [" << b << "]" << std::endl;
}
int main (void) {
    const char *x = "Hello";
    fnA (x);
    fnB (x);
    return 0;
}

它按预期输出:

fnA: [Hello]
fnB: [Hello]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-10
    • 2015-12-13
    • 2020-04-25
    • 2015-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多