/*
测试C语言二维数组用=0是否能正确初始化, 以及指针能不能用p[i] 代替p+i
*/
#include "stdio.h"
#include "string.h"
#include <unistd.h>
#include "stdlib.h"
#define BOARD_NAME_BUTT 128
#define EFS_LAST_FILE_TYPE 256
#define MAX_EFS_NUM_IN_SINGLE_FILE 50
#define SSMP_MAX_LOAD_FILENAME_LENGTH 128
#define LOAD_BOARD_DESC_LEN 12
typedef unsigned char uint8_t;
typedef unsigned int uint32_t;
typedef unsigned short uint16_t;
typedef struct tagFlashBoardFile {
unsigned char aucDesc [MAX_EFS_NUM_IN_SINGLE_FILE][LOAD_BOARD_DESC_LEN];
unsigned char szFileName[SSMP_MAX_LOAD_FILENAME_LENGTH];
uint32_t aulSubFileLen[MAX_EFS_NUM_IN_SINGLE_FILE];
uint32_t ulSoftVersion;
uint32_t ulFileOffset;
uint16_t usFileType;
unsigned char ucEFSCount;
unsigned char ucValidFlag;
uint8_t spVersion;
uint32_t ulOnlineBoardNum;
uint32_t ulBoardSolt[30];
}LOAD_FLASH_BOARD_FILE_S, *PLOAD_FLASH_BOARD_FILE_S;
typedef struct {
LOAD_FLASH_BOARD_FILE_S *flashBoardInfo;
uint8_t efsIndex;
} BoardEfsInfo;
int main(int argc, char **argv)
{
BoardEfsInfo boardList[BOARD_NAME_BUTT][EFS_LAST_FILE_TYPE] = {0};
for (int i = 0; i < BOARD_NAME_BUTT; i++) {
for (int j = 0; j < BOARD_NAME_BUTT; j++) {
printf("%d.%d.flashBoardInfo=%x, efsIndex=%d\n", i, j, boardList[i][j].flashBoardInfo, boardList[i][j].efsIndex);
}
}
LOAD_FLASH_BOARD_FILE_S * flashBFileTable = malloc(sizeof(LOAD_FLASH_BOARD_FILE_S) * 16);
printf("sizeof(LOAD_FLASH_BOARD_FILE_S)=%d, flashBFileTable=%lu\n", sizeof(LOAD_FLASH_BOARD_FILE_S), flashBFileTable);
boardList[0][0].flashBoardInfo = &flashBFileTable[3];
printf("boardList[0][0].flashBoardInfo=%lu, ok=%lu", boardList[0][0].flashBoardInfo, (boardList[0][0].flashBoardInfo - flashBFileTable) / sizeof(LOAD_FLASH_BOARD_FILE_S));
return 0;
}
/*
结论:
指针能不能用p[i] 代替p+i ? 答: 不能,否则编不过
C语言二维数组用={0}是否能正确初始化? 可以
*/
/*
结论:
指针能不能用p[i] 代替p+i ? 答: 不能,否则编不过
C语言二维数组用={0}是否能正确初始化? 可以
*/