小编SCF*_*nch的帖子

C如何在多维数组中分配数据项?

我想知道C将如何分配多维数组的数据项,以及它们的分配是否跨机器一致.

我知道,在最低级别,数据项是邻居,但我不知道它们是如何进一步安排的.

例如,如果我将3D数组分配为int threeD[10][5][6],我可以假设&(threeD[4][2][5]) + 1 == &(threeD[4][3][0])吗?在所有机器上?

在此先感谢您的帮助.

c arrays multidimensional-array

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

如何防止在其他智能指针中存储基于intrusive_ptr的类

在工作中我们有一个基类,我们称之为IntrusiveBase,它就像mixin一样,允许将类存储在boost:intrusive_ptr中.也就是说,它为其子类提供了引用计数,并定义了intrusive_ptr_add_ref和intrusive_ptr_release重载.问题是,某人很容易忘记特定的子类继承自IntrusiveBase,然后将它存储在scoped_ptr或shared_ptr等其他智能指针中.这不起作用,因为,例如,无论引用的是什么,scoped_ptr都会在超出范围时删除该对象.我们在~IntrusiveBase中有一个断言,引用计数是1,但这并不是万无一失的,因为在scoped_ptr超出范围时,通常只会出现原始实例.不是一个.

如果有人不小心这样做,有什么方法可以导致编译时失败?即使我必须为每个主要的智能指针类重复做一些事情,也是值得的.

c++ boost smart-pointers

2
推荐指数
2
解决办法
364
查看次数

MATLAB的normpdf函数如何工作?

当使用MATLAB命令normpdf()尝试使用mean = 0和标准差= 20绘制普通PDF时,我得到了奇怪的结果,请参见图片.

替代文字

用于绘制图形的代码如下:

plot(normpdf((-100:0.1:100),0,20))
Run Code Online (Sandbox Code Playgroud)

使用此功能的正确方法是什么?

matlab

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

C++中的内存屏障/障碍:是否会增强或其他库拥有它们?

我现在正在阅读有关内存屏障和障碍的信息,以此来同步多线程代码并避免代码重新排序.

我通常在Linux OS下用C++开发,我boost大量使用libs,但是我找不到任何与之相关的类.你知道在增强中是否存在栅栏的记忆障碍,或者是否有办法实现相同的概念?如果不是我可以看看哪个好的图书馆?

multithreading boost boost-thread memory-barriers

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

使用C++访问桌面上的文件

我使用的是Windows 7,我在桌面上创建了一个名为的文件 test.txt.如何使用C++访问此文件?例如,请考虑以下代码:

#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;

int main(int argc, char *argv[])
{

  fstream inout("test.txt", ios::in | ios::out | ios::binary);

  if(!inout) {
    cout << "Cannot open input file.\n";
    return 1;
  }

  long e, i, j;
  char c1, c2;
  e = 5;

  for(i=0, j=e; i<j; i++, j--) {
    inout.seekg(i, ios::beg);
    inout.get(c1);
    inout.seekg(j, ios::beg);
    inout.get(c2);

    inout.seekp(i, ios::beg);
    inout.put(c2);
    inout.seekp(j, ios::beg);
    inout.put(c1);
  }

  inout.close();
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

在片段中fstream inout("test.txt", ios::in | ios::out | ios::binary),我应该更改什么来访问桌面上的test.txt?

c++

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

在C文件中使用它们之前,是否总是需要定义函数?

我有以下C代码:

int main() {
    myFunctionABC(2);
    return 0;
}

void myFunctionABC(int n) {
    printf("%d\n", n);
}
Run Code Online (Sandbox Code Playgroud)

所以...这段代码正在运行,我不明白为什么.我一直认为C编译器总是需要每个被引用的函数已经"已知",否则将无法编译过程.

这为什么有效?

c c++

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

表达式评估为左值的示例

是否有任何表达式可以评估给出左值?我相信表达式产生一个可以分配给左值的右值.

c++

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

如何在一个从s函数调用的单独c文件中使printf工作?

我在文件mySFun.c中有一个s函数,它调用一个函数foo(),该函数在一个单独的文件myFoo.c中实现.当我在mySFun.c中的mdlOutput函数中编写printf语句时,它们工作正常.但是当我将printf放在myFoo.c中的函数foo()中时,它们不会在命令窗口中显示它们的输出.

当printf位于从s函数调用的另一个文件中时,如何启用printf功能?

matlab printf simulink mex

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

constexpr说明符性能不符合我对C++的期望

我刚刚了解到constexpr说明符函数可以在编译过程中运行,我试着用Debug x86 Mode检查VS 2017的实际性能,结果显示它们之间的时间差很小.它仍然耗费了很多时间而不是"0".我做错了什么,任何人都可以帮助我,非常感谢!

#include <iostream>
#include <time.h>

size_t r_fun(size_t n) noexcept
{
    if (n == 0) return 0;
    if (n == 1) return 1;
    return r_fun(n - 1) + r_fun(n - 2);
}

constexpr size_t c_fun(size_t n) noexcept
{
    if (n == 0) return 0;
    if (n == 1) return 1;
    return c_fun(n - 1) + c_fun(n - 2);
}


int main()
{
    clock_t start, finish;

    start = clock();
    auto r_x = r_fun(40);  
    finish = clock();
    std::cout <<"result:"<< r_x<< …
Run Code Online (Sandbox Code Playgroud)

c++ compiler-optimization visual-studio c++11 c++14

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

明显操作的复杂代码

有时,主要出于优化目的,非常简单的操作被实现为复杂和笨拙的代码.

一个例子是这个整数初始化函数:

void assign( int* arg )
{
    __asm__ __volatile__ ( "mov %%eax, %0" : "=m" (*arg));
}
Run Code Online (Sandbox Code Playgroud)

然后:

int a;
assign ( &a );
Run Code Online (Sandbox Code Playgroud)

但实际上我不明白为什么用这种方式写的......

你有没有看到任何有真正理由的例子?

c++ optimization inline-assembly

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