相关疑难解决方法(0)

在C++中初始化静态数组

我有这些课程:

class FS{
  static char mount(Partition* p)
      {return myImpl->mount(p);}
  /*...*/
  KernelFS* myImpl;
};

class KernelFS{
char mount(Partition* p){
   /*...*/
   while(available[i]) i++;
}
  /*...*/
  static bool available[26];
};
Run Code Online (Sandbox Code Playgroud)

主程序仅使用FS的静态函数,例如:

void main(){
  Partition* p=/*...*/;
  FS::mount(p);
  /*...*/
}
Run Code Online (Sandbox Code Playgroud)

当调用FS :: mount(p)时,它调用myImpl-> mount(p)(这是来自KernelFS类的函数).这就是问题所在.到那个时刻

while(available[i]) i++;
Run Code Online (Sandbox Code Playgroud)

......它破了!我认为问题是我没有初始化可用的阵列[26],我不知道该怎么做......还有什么问题呢?请帮忙.

顺便说一句,main()从不创建FS或KernelFS对象,所以我认为没有使用构造函数...

c++ arrays static constructor initialization

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

将值分配给同一行上的多个声明

我正在创建变量

std::string str1,str2,str3,str4 = "Default";
Run Code Online (Sandbox Code Playgroud)

但是变量没有默认值.如何为以这种方式创建的变量赋值

c++

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

数组在C++中自动填充

我正在学习C++,做一些简单的例子,并发现了这种奇怪的行为.当填充整数数组的元素时,如果任何元素设置为大于2147483647(我认为是最大整数值?),则数组中的其余元素将设置为该确切数字,每个其中之一.

我理解如果一个元素超出其类型限制,编译器会将其限制为该限制,但我无法理解为什么它与其他项目做同样的事情,甚至没有要求用户填充它们.

这是我运行的一个简单测试:

#include <iostream>
using namespace std;

int main()
{
    int test[5];
    int num = 0;

    for (int i=0; i<5; i++)
    {
        cout << "Enter the number in position " << i << endl;
        cin >> num;
        test[i] = num;
    }

    cout << "Values in the array: " <<endl;
    for (int i=0; i<5; i++)
        cout << test[i] << endl;

}
Run Code Online (Sandbox Code Playgroud)

感谢您阅读,评论和帮助!

c++ arrays integer-overflow cin

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

memset 可以用于多字节类型和非零值吗

我正在尝试将数组初始化为非零值:

BYTE byteArray[50];
memset(byteArray, 20, sizeof(byteArray));   // Works fine

int intArray[50];
memset(intArray, 20, sizeof(intArray));     // Does not work
Run Code Online (Sandbox Code Playgroud)

目前,我只是手动初始化数组:

// Initialise array manually
for (int pos = 0; pos < 50; pos++)
    intArray[pos] = 20;
Run Code Online (Sandbox Code Playgroud)

我确实很欣赏memset设置内存范围中的每个字节,因此这不能按照我需要的多字节类型的方式工作(除了请求值为 的特殊情况0)。有没有办法memset使用多字节类型强制非零值,或者可能有替代库函数?

c c++ arrays

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

使用相同元素的数组初始化

是否有使用常量初始化固定大小数组的快捷方式.例如,我需要int array[300]在300个空间中每个10个,是否有诀窍避免写入10 300次?

c++

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

如何快速清除DWORD指针数组?

这是我的代码.

DWORD *dwDSE = new DWORD[4096];
Run Code Online (Sandbox Code Playgroud)

这是我清除它的[低效]方式:

for (INT k=0;k<4096;k++)
    dwDSE[k] = 0;
Run Code Online (Sandbox Code Playgroud)

清除它/将其初始化为零的最佳方法是什么?

c++ arrays pointers

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

数组不会在c ++中使用花括号进行初始化

我正在学习c ++,我遇到了以下奇怪的事情:

如果我按照书中的说法初始化数组

int my_array[5] = {10}
Run Code Online (Sandbox Code Playgroud)

每个数组字段仍然初始化为零,当它应该是十.

如果我在循环中初始化它,它按预期工作

怎么了?我正在使用Ubuntu并使用g ++进行编译

c++ arrays

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

是否直接初始化禁止数组?

语言律师明智,标准中的哪个条款禁止下面的代码:

int arr[] (10, 42); 
Run Code Online (Sandbox Code Playgroud)

这将产生一个由10个元素组成的数组,每个元素都被初始化为42个元素.

c++ arrays initialization language-lawyer

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