小编Fer*_*llo的帖子

如何将矩阵的索引映射到一维数组(C++)?

我有一个8x8矩阵,像这样:

char matrix[8][8];
Run Code Online (Sandbox Code Playgroud)

另外,我有一个包含64个元素的数组,如下所示:

char array[64];
Run Code Online (Sandbox Code Playgroud)

然后我将矩阵绘制成一个表格,并用数字填充单元格,每个数字从左到右,从上到下递增.

如果我将索引3(列)和4(行)索引到矩阵中,我知道它对应于数组中位置35处的元素,因为它可以在我绘制的表格中看到.我相信有一些公式可以将矩阵的2个索引转换为数组的单个索引,但我无法弄清楚它是什么.

有任何想法吗?

c c++ arrays matrix

39
推荐指数
3
解决办法
5万
查看次数

任何汇编语言被认为有用所需的最小指令集是什么?

我正在研究汇编编程,所以我决定尝试用软件实现一个"虚拟微处理器",它有寄存器,标志和RAM来处理,用变量和数组实现.但是,由于我只想模拟任何微处理器的最基本行为,我想创建一个只有基本指令的汇编语言,只有那些没有它就没用的指令.我的意思是,有汇编语言可以执行乘法和交换寄存器值等,但这些操作不是基本的,因为您可以使用更简单的指令来实现它们.我不想实现那些指令.

我可以想象一些指令(我相信)必须始终以任何汇编语言存在,例如MOV移动字节和JP将指令指针发送到另一个地址.

你能否提出一套最基本和最基本的装配说明?谢谢!

assembly instruction-set microprocessors vm-implementation

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

在C++中声明一个指向struct的指针会自动为其成员分配内存.我错了吗?

我编写了下面这段代码,我相信如果我试图访问我甚至没有分配内存的结构的成员,它会崩溃.但我很惊讶C++自动为结构分配了内存.这是正常的行为吗?为了进行比较,如果您声明一个指向对象的指针然后尝试访问任何成员而不实际使用运算符"new"创建该对象,则程序将崩溃.当我相信它不应该时,我只是好奇它为什么会起作用.

这是我的计划:

#include <stdio.h>

struct Produto
{
    int codigo;
    float preco;
};

int main()
{
    struct Produto* sabonete;
    sabonete->codigo = 654321;
    sabonete->preco = 0.85;

    printf( "Codigo = %i\n", sabonete->codigo );
    printf( "Preco = R$ %.2f\n", sabonete->preco );

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

操作系统:Windows 7
编译器:MinGW GCC 4.6.1

c++ pointers data-structures

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

如何从一个字中提取2个字节,以及如何从2个字节(在C中)创建一个字?

我试图从16位字中提取两个字节,并从两个字节中产生一个16位字.这是我尝试过的(byte = unsigned char,word = unsigned short):

将grpix字拆分为2个字节:

word grpix; // Assume that the value has been initialized

byte grpixl = grpix & 0x00FF;
byte grpixh = grpix & 0xFF00;
Run Code Online (Sandbox Code Playgroud)

从2个字节制作grpix字

byte grpixh; // Assume that the value has been initialized
byte grpixl; // Assume that the value has been initialized

word grpix = grpixh;
grpix <<= 8;
grpix += grpixl;
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我的代码没有按预期工作,现在我不确定这个单词的"分裂"是否错误,如果单词的"制作"是错误的,或者两者都有...你能否给出我有些建议?

c byte cpu-word

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

有关如何实现BASIC语言解析器/解释器的任何建议?

我一直在尝试实现一个BASIC语言解释器(在C/C++中),但我还没有找到任何解释语言结构解析过程的书或(全文)文章.有些命令相当复杂且难以解析,尤其是条件和循环,例如IF-THEN-ELSE和FOR-STEP-NEXT,因为它们可以将变量与常量,整个表达式和代码以及其他所有内容混合,例如:

10 IF X = Y + Z THEN GOTO 20 ELSE GOSUB P
20 FOR A = 10 TO B STEP -C : PRINT C$ : PRINT WHATEVER
30 NEXT A
Run Code Online (Sandbox Code Playgroud)

能够解析类似的东西并让它发挥作用似乎是一场噩梦.更糟糕的是,用BASIC编写的程序很容易变得混乱.这就是为什么我需要一些建议,阅读一些书或其他什么来让我明白这个主题.你能提出什么建议?

parsing interpreter basic

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

分配复合结构时,C程序崩溃

操作系统:Windows 7,编译器:GCC 3.2.3(MinGW)

我用C创建了这三个数据结构:

#define MAP_NAME_LEN    30
#define MAP_W           25
#define MAP_H           19
#define WORLD_W         32
#define WORLD_H         32

typedef unsigned char byte;

typedef struct Tile
{
    byte type;
    byte character;
    byte fgColor;
    byte bgColor;
};

typedef struct Map
{
    char name[MAP_NAME_LEN];
    Tile overlay[MAP_H][MAP_W];
    Tile underlay[MAP_H][MAP_W];
};

typedef struct World
{
    Map area[WORLD_H][WORLD_W];
};
Run Code Online (Sandbox Code Playgroud)

当我尝试创建Tile和/或Map的单个实例时,没关系,完全没问题,一切正常.但是如果我尝试创造一个世界,就像......

int main()
{
    World world;
}
Run Code Online (Sandbox Code Playgroud)

...程序只是崩溃(Windows 7说该程序崩溃了,正在寻找解决方案等).你们有谁知道为什么会这样?

谢谢!

c struct

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

如何在MSVC中静态链接库?

我正在Microsoft Visual C++ 10中编译我的程序,它使用PDCurses库.我已将其配置为与pdcurses.lib链接,但当我尝试运行该应用程序时,系统会抱怨它无法找到"pdcurses.dll".它不应该抱怨它.我曾经使用MinGW(GCC)编译程序,当我尝试运行应用程序时它并没有问我任何DLL.我能做些什么让MSVC静态链接PDCurses?

c++ pdcurses static-linking visual-c++

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