void DtInpArray( void ) { //==================== // Data initialize an array. sym_id fd; sym_id sym; sym = GetPtr(); fd = GetPtr(); if( fd == NULL ) { InitVar = sym; DtOffset = 0; InitArr( sym->u.ns.si.va.u.dim_ext, sym->u.ns.u1.s.typ, _SymSize( sym ) ); } else { // array field within structure InitArr( fd->u.fd.dim_ext, fd->u.fd.typ, fd->u.fd.xt.size ); } }
/************************************************* Function: main Description: 主函数 Calls: scanf printf Called By: 编译器 Input: 无 Output: 无 Return: 0 *************************************************/ int main(void) { int len; int res; int pos = 0; int val = 1030; struArray StruArray; printf("input the array length\n"); scanf("%d", &len); InitArr(&StruArray, len); //下列为测试程序 AppendArr(&StruArray, 512); ShowArr(&StruArray); AppendArr(&StruArray, 999); ShowArr(&StruArray); AppendArr(&StruArray, 1111); ShowArr(&StruArray); AppendArr(&StruArray, val); ShowArr(&StruArray); AppendArr(&StruArray, 666); ShowArr(&StruArray); InsertArr(&StruArray, 10, 40); ShowArr(&StruArray); DeleteArr(&StruArray, 9); ShowArr(&StruArray); if (FindVal(&StruArray, val, &pos)) { printf("%d:%d\n", val, pos); } if (Get(&StruArray, 8, &res)) { printf("res:%d\n", res); } SortArr(&StruArray); ShowArr(&StruArray); if (FindVal(&StruArray, val, &pos)) { printf("%d:%d\n", val, pos); } InverseArr(&StruArray); ShowArr(&StruArray); if (FindVal(&StruArray, val, &pos)) { printf("%d:%d\n", val, pos); } DeleteAll(&StruArray); return 0; }
static void StructInitItem( sym_id fd ) { //=========================================== // Initialize a structure field. DtItemSize = fd->u.fd.xt.size; if( fd->u.fd.dim_ext == NULL ) { AsnVal( ParmType( fd->u.fd.typ, DtItemSize ) ); } else { if( fd->u.fd.typ == FT_STRUCTURE ) { InitStructArr( fd, fd->u.fd.dim_ext ); } else { InitArr( fd->u.fd.dim_ext, fd->u.fd.typ, DtItemSize ); } } }