1. 程式人生 > >快速的將結構體各成員清零

快速的將結構體各成員清零

如何將結構體各成員清零。以前筆者我也傻傻的如下這樣做:
struct AA{
short int a;
long b;
short int  c;
long d;
};

struct AA tab[10];

void main()
{
   int i;
   for(i=0;i<10;i++)
   {
          tab[i].a = 0;
          tab[i].b = 0;
          tab[i].c = 0;
          tab[i].d = 0;  
   }
}

現在我懂了,,這樣做簡單的了。。程式碼的效率也提高了。。。
struct AA{
short int a;
long b;
short int  c;
long d;
};

struct AA tab[10];

void clear(unsigned char *pta, int size )
{
    while(size>0)
    {
        *pta++ = 0
        size --;
    }
}

void main()
{
     clear(( unsigned char *)&tab[0],sizeof(tab));
    // 將結構體的起始地址強轉,把結構體所佔的地址分為若干個BYTE空間,再對各個BYTE空間清0。
}

這種方法是不是簡單多了。。呵呵。。。。

相關推薦

快速結構成員

如何將結構體各成員清零。以前筆者我也傻傻的如下這樣做:struct AA{ short int a; long b; short int c; long d; }; struct AA tab[10]; void

[c++] 初始化結構 賦值結構 輸出結構成員

/*  * 程式的版權和版本宣告部分:  * Copyright (c) 2012, 煙臺大學計算機學院  * All rights reserved.  * 檔名稱:.cpp  * 作    者:毛通  * 完成日期:2013 年 1月22 日  * 版 本

結構訪問成員變量什麽時候該用“->”或者是"."呢?的困惑

size error request lin list 如果 mem def 變量 煎蛋栗子: typedef struct Node{int data;struct Node *next;}LinkList;LinkList *p=(LinkList *)malloc(s

C#結構和指針互轉的方法

緩沖 style system RR 程序集 ascii 通知 work Coding 1. 功能及位置 將數據從托管對象封送到非托管內存塊,屬於.NET Framework 類庫 命名空間:System.Runtime.InteropServices

結構數組中內容以文件形式的導出

res tac () end hda str phone nta 結構 void fileOutput(contacts student[] , int n){   ofstream out ;   out . open("tongxunlu-new.txt") ;   f

golang結構轉換成json,json轉換成結構

1、將結構體轉換成json需要用到marshl函式(或者marshlIndent()函式)。 區別:marshl函式沒有將json格式化輸出,輸出是一個json的字串。----不利於直接檢視json的結構。maeshldent函式

[流暢的 C]C語言結構轉化為字串

[流暢的 C] C語言將結構體轉化為字串 Overview 思路 直接使用 memcpy 之類的是不可以的。所以最好的做法就是定義結構體的時候就實現對字串的轉換。 就像 Python 的 __str__ 一樣。 (不好意思,博主雷打不動轉python!信仰

結構實現的簡易通訊錄改成動態的版本

之前實現的一次結構體型通訊錄電話本容量固定為1000,如果只需存50人,就浪費950的容量,如果存 2000人,容量就不夠了,所以這次動態開闢一個電話本容量。並且將之前的版本測試部分用函式指標陣列簡化完善一下。 之前版本(點選這裡) 程式碼如下: 1.標頭檔案部分: #

函式指標作為結構成員

我發一個執行過的原始碼。 在.h檔案中,有如下程式碼: //TVM控制狀態 typedef struct _m_TVM_CTRL {  u32(*get_coin_totval)(void); //得到此次投入硬幣總金額  u32(*get_coin_totcnt)(vo

c語言結構指標成員初始化

今天遇到一個奇怪的問題,錯誤提示段錯誤,明顯是指標操作有問題。找了N久才把問題定位在自定義的連結串列上。next指標一直有資料。 struct S{ void (*call)(); S *next; };上面一個簡單的結構體,在程式中:

結構學習筆記3——結構成員運算符

兩種 style stdlib.h 變量定義 tdi urn 飛揚 單獨 span 訪問成員:學會之後可以對結構體中的成員,單獨進行操作。 結構體訪問成員分兩種:1,對結構體實例變量的訪問 2,對結構體指針變量的訪問。 struct Stu stu1;//實例變量就

C語言:多種方式結構存放到檔案中

第一種方法:使用格式化讀寫文字檔案 #include<stdio.h> #include<stdlib.h&

C語言結構在定義的時候,成員後面加冒號是什麼意思?

位域是指資訊在儲存時,並不需要佔用一個完整的位元組, 而只需佔幾個或一個二進位制位。例如在存放一個開關量時,只有0和1 兩種狀態, 用一位二進位即可。為了節省儲存空間,並使處理簡便,C語言又提供了一種資料結構,稱為“位域”或“位段”。所謂“位域”是把一個位元組中的二進位劃分為

結構中最後成員為一個數組(長度為)與一個指標

1. 結構體中最後一個數組長度為零 typedef struct _ex_mng { unsigned int type; unsigned int oper; char data[0]; }ex_mng_t; 最近在專案常用到這樣子的一個結

在C語言結構中添加成員函數

我們 pau 打印 log print class 控制 stdio.h 語言   我們在使用C語言的結構體時,經常都是只定義幾個成員變量,而學過面向對象的人應該知道,我們定義類時,不只是定義了成員變量,還定義了成員方法,而類的結構和結構體非常的相似,所以,為什麽不想想如何

函數外面對單個結構成員進行賦值出錯

類型 自動 構造 不能 結構體成員 bsp 入口 出錯 進入 關於“為什麽整型的就可以,結構體類型的就不能這麽賦值呢?”——整形等常規數據類型由編譯器自動識別,而自定義的數據類型(樓主自定義的結構體類型),編譯器在編譯階段無法識別,故出錯。 關於“在函數外單個初始化”——在

3.c語音結構成員內存對齊詳解

定義 pre 形狀 sed 兩個 分配 我們 替代 images 一.關鍵一點 最關鍵的一點:結構體在內存中是一個矩形,而不是一個不規則形狀 二.編程實戰 1 #include <stdlib.h> 2 #inc

68.qq號索引結構寫入內存,並實現快速排序

ets style pau ont 步驟 之前 比較 多個 兩個 1 //兩個步驟,第一步讀取文件,並且初始化索引結構體,把初始化的索引結構體寫入到文件,第二步,讀取這個文件到索引結構體 2 //並對這個結構體進行快速排序,得到順序的索引,再寫入文件 3 #d

計算C結構成員偏移量兩種方式本質上是一樣的

BE main print tdd of函數 pan color c結構體 計算 #include <stdio.h> #include <stddef.h> typedef struct test_st { char a[3];

strcpy拷貝結構成員中的字元陣列溢位的問題

結構體定義: typedef struct env {     char env_name[10];     char env_val[20];     int is_used;