小编Gui*_* S.的帖子

将变量数组传递给C中的函数

我有一个需要传递大量变量的C函数,所以我想到将它们"打包"在一个数组(变量矩阵)中.关键是,这些变量的类型非常不同,有些是int,有些是数组(字符串和向量),而且很多都是浮点数.有没有办法让未指定存储在矩阵中的数据类型?(我未成功探索了"数据类型"的空白)

c arrays function

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

不同进程的相同内存地址

我只是不明白为什么这段代码会按照它的方式工作(而不是我所期望的):

 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
 #include <sys/wait.h>
 #include <sys/types.h>

 int main()
 {
     int buffer;
     int* address;

     address=&buffer;


     if(fork()==0)
     {
         *address=27;
         printf("Address %ld stores %d\n",(long)address,*address);
         exit(0);
     }
     wait(NULL);

     printf("Address %ld stores %d\n",(long)(&buffer),buffer);    
     return 0;
 }
Run Code Online (Sandbox Code Playgroud)

为什么系统会存储不同的变量,即使它们指向相同的内存地址?

注意:我从没想过这段代码会起作用,否则整堆管道和东西都没有任何意义;我只是想了解这里发生了什么。

c memory-management shared-memory

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

简单(但错误)的Verilog代码

我正在尝试使用Verilog语言实现ALU; 作为第一种方法,我想模​​拟它的这个非常简单的版本:

module alu(opcode, in1, in2, result);
 input[4:0] opcode;
 input[11:0] in1, in2;
 output[11:0] result;

 case(opcode)
   5'b00000 assign result=in1+in2;
   5'b00010 assign result=in1;
   5'b00011 assign result=in1+1;
   5'b01000 assign result=in1<<1;
   5'b01001 assign result=in1>>>1;
   5'b10001 assign result=in1 && in2;
   5'b10010 assign result=in1 || in2;
 endcase

endmodule
Run Code Online (Sandbox Code Playgroud)

不管它的简单性,我得到这个编译错误:

 case(opcode)
           |
 *E,NOTPAR: Illegal operand for constant expression [4(IEEE)].
Run Code Online (Sandbox Code Playgroud)

我真的无法弄清楚代码有什么问题.

verilog

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

标签 统计

c ×2

arrays ×1

function ×1

memory-management ×1

shared-memory ×1

verilog ×1