小编Ric*_*son的帖子

分配函数指针的正确方法

我对将函数指针赋给变量的正确语法有点困惑.如果我有一个函数foo

int foo();
Run Code Online (Sandbox Code Playgroud)

我正在将指向foo的指针分配给变量栏

void * bar;
Run Code Online (Sandbox Code Playgroud)

如果我使用它似乎并不重要

bar = foo; 
// or 
bar = &foo; 
Run Code Online (Sandbox Code Playgroud)

在我看来,其中只有一个应该是正确的还是我错过了什么?

c function-pointers

11
推荐指数
2
解决办法
1万
查看次数

用另一个向量替换向量的一部分

我有一个大小为20的矢量和一个大小为5的矢量.我希望用第二个矢量替换第一个矢量中的元素11-15.我可以通过从第一个向量中删除这些元素并插入第二个向量来实现.有没有其他方法可以做到这一点,也许是通过使用assign?

c++

8
推荐指数
1
解决办法
1763
查看次数

堆栈分配用户定义的类对象

我正在尝试理解POD类型以及如何在堆栈上分配和初始化它们.特定

class A {
public:
  A();
  int x;
};

class B {
public:
    int x;
};

int func()
{
    A a;
    B b;
}
Run Code Online (Sandbox Code Playgroud)

我是否正确地说b是在a之后分配但在a之前初始化?我的意思是,空间是按照它们被声明的顺序分配给a和b但是在分配空间时初始化b并且在声明它时初始化a?

我阅读了一篇关于POD和聚合的非常好的常见问题解答 什么是聚合和POD以及它们如何/为什么特殊?

他说的一件事是:非POD类类型的对象的生命周期在构造函数完成时开始,在析构函数完成时结束.对于POD类,生命周期在对象的存储被占用时开始,并在该存储被释放或重用时结束.

所以我正在尝试了解POD如何分配和初始化的细节,以及它与非POD的不同之处.

c++

4
推荐指数
1
解决办法
175
查看次数

在C中使用#符号

我正在进行在线C语言测试(不是为了工作,仅仅是为了我自己)并且我继续使用哈希符号运行这种类型的问题.我假设它不是拼写错误,我不熟悉哈希符号的使用.

#include <stdio.h>
int* func()
{
    int num = 10;
    return #
}
int main()
{
    int *ptr = func();
    printf("%d\n", *ptr);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

上面C代码的输出是什么?

答案是它是一个运行时错误,解释是

函数中定义的变量将在堆栈段中分配,该函数将在函数返回时删除.因此,访问这些变量的地址会导致分段错误.

c

4
推荐指数
1
解决办法
162
查看次数

如何将'this'指针用作成员函数的参数

我有这个简单的课程

class foo {
public:
  void func() const;
  void func2();
};

void foo::func() const {}
void foo::func2() {}

int main() {
  const foo f;
  f.func();
  f.func2();
}
Run Code Online (Sandbox Code Playgroud)

当我尝试编译时,我收到此消息:

错误:将'const foo'作为'void foo :: func2()的'this'参数传递'丢弃限定符[-fpermissive]

我理解使用const对象的非const成员,我的问题是'this'指针如何用作func2的参数?

c++

1
推荐指数
1
解决办法
182
查看次数

标签 统计

c++ ×3

c ×2

function-pointers ×1