c - 如何使用指针初始化和打印结构并将其提供给函数?
问题描述
我想用指针打印并初始化一个结构并将其提供给另一个函数。
我的问题是:我怎样才能用变量名“注册”来初始化结构并将其打印出来以测试并查看我的值和地址?我的程序目标基本上是模拟 CPU。因此,我有 3 个用于订单、堆栈和计算器的指针(这是我们老师给的任务)。但是我对结构和指针不太好
#include<stdio.h>
#include<stdint.h>
#include<stdbool.h>
struct reg {
unsigned char pc; // Befehlszeiger
unsigned char sp; // Stapelzeiger
unsigned char fa; // Flags + Akkumulator
};
bool cpu(struct reg *registers, unsigned char data[128], uint16_t cmd[256]);
int main(){
unsigned char data[128];
uint16_t cmd[256];
cmd[127] = 12;
data[127] = 'D';
data[128] = 'Z';
struct reg *registers = { '1', '2', '3'};
printf("The number before function: %d\n", registers->pc);
cpu(registers, data, cmd);
return 0;
}
bool cpu(struct reg *registers, unsigned char data[128], uint16_t cmd[256])
{
printf("The number in function: %d\n", registers->pc);
return 0;
}
因为程序说:
|20|warning: initialization makes pointer from integer without a cast [-Wint-conversion]|
20|note: (near initialization for 'registers')|
20|warning: excess elements in scalar initializer|
|20|note: (near initialization for 'registers')|
c|20|warning: excess elements in scalar initializer|
c|20|note: (near initialization for 'registers')|
解决方案
为了使它工作重写代码如下:
struct reg registers = { '1', '2', '3'}; // "registers" isn't a pointer
printf("The number before function: %d\n", registers.pc); // "." instance of a struct
cpu(®isters, data, cmd);// pass the address of "registers"
推荐阅读
- css - 达到滚动边界时防止过度滚动
- jquery - 从请求中获取 POST 参数
- visual-studio - 如何通过 CLI 中的 CMake/CTest/Catch2 运行使用 VisualStudio 构建的测试?
- linked-list - 链表的摊销运行时复杂度是否比向量低?
- bash - 如果第三方命令等待输入,我该如何退出?
- linux - 从 appsettings.json 加载 SSL 证书
- vue.js - v-for 中的 Vuetify 复选框仅在单击标签时才有效
- python - 我可以将 add_argument 用于具有不同 nargs 的相同位置 arg 两次吗?
- user-interface - f# visual studio code gui 如何在 Mac osx 上使用 open System.Windows.Forms
- android - 如何在android中正确写入文件以使其可供ADB使用?