检查我对指针/结构和数组的理解

标签 c arrays pointers typedef

嘿,我只是想了解一些关键概念,并且已经完成了自己的研究,但有一些问题,如果有人可以检查它们是否正确,我将非常感激。我正在为测试做复习,我们的教授告诉我们自己弄清楚......所以我这样做了,就这样:)

1:声明一个名为 thePointer 的指针,用于保存包含 10 个名为 Pointed 的元素的数组中的元素的地址

int Pointed[10] = {};

int *thePointer = &Pointed[1];

需要这方面的帮助...

2:编写一个函数,该函数将接受数组的地址和数组中的元素数量,并使用信息将数组的每个元素初始化为零

void arrayFunction (int *array, int element)

    for (x = 0; x < element; x++);
      {
      array[x] = 0;
      }

3:创建一个结构来保存表示以下内容的位

--2 个字段,每个字段保存 4 位 BCD 数字,它们一起保存当前循环计数(我将它们称为 CRC1 和 CRC2) 电机方向:2位 速度:4位 故障状态:3位 将结构命名为controlMotor

struct controlMotor{

unsigned char CRC1: 4;
unsigned char CRC2: 4;
unsigned int motorDirection: 2;
unsigned int speed: 4;
unsigned int faultCondition: 3;
};

-- 使用 typedef 命名这个新数据类型:statusDrive_t

typedef controlMotor statusDrive_t;

--创建名为 marsDrive 的结构数组来保存每 6 个驱动器的状态

statusDrive_t marsDrive[5] ={statusDrive_t.CRC1,statusDrive_t.CRC2,statusDrive_t.motorDirection,statusDrive_t.speed,statusDrive_t.faultCondition}

用最大值初始化数组第一个元素的每个字段

marsDrive[0].CRC1 = 15;
marsDrive[0].CRC2 = 15;

最佳答案

Q1:如果问题是指向数组的任何元素,那么你是对的。但 1 不是数组的第一个元素。

Q2:函数应该接受数组的地址,您在函数内部声明数组。另外,应避免在 for 后面使用分号。另外,您应该只使用 < 而不是 <= 。正确的应该是这样的:

void ArrayFunction(int arr[], int i) {
for (x = 0; x < i; x++){
      arr[x] = 0;
      }
}

我认为 Q3 很好,但 typedef 应该是

typedef struct controlMotor statusDrive_t;

数组还必须声明为

statusDrive_t marsDrive[6];

数组从 0 开始(在您的情况下从 5 开始)

关于检查我对指针/结构和数组的理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15644390/

相关文章:

c - 传递 ' ' 的参数 1 使指针来自整数而不进行强制转换

c - Linux C脚本-显示用户,主机名

C 段错误打印缓冲区

c++ - MPI 中的发送和接收数组

c - 在c中生成字指针数组

c - 如何动态分配结构+指针

c - 使用指针表示法访问 C 中的多维数组

java - 在Android中输入EditText并保存到数组时通过split函数分隔数字

java - 在运行时设置数组的等级

c - Malloc 内存布局