陣列結構體簡單用法

2022-07-15 23:03:20 字數 1689 閱讀 5214

1、陣列變數名是常指標,結構體變數名不是,return 陣列變數名是指標不是陣列,(區域性定義的陣列結束時釋放,返回無意義)return結構體變數名是結構體

以此解釋陣列在宣告後不能對變數名再次賦值,因為是常指標.字串可以用指標變數賦值,其他可以memcpy()在以及有定義

void *memcpy(void *dest, const void*src,size_t count);count以位元組為單位一般sizeof(datatypelength)*n,指向const說明src指向記憶體不會更改

2、宣告陣列(全域性除外)以及函式傳參表不用指明元素個數,如void function(double*ptr)或void function(double ptr);

3、大型臨時陣列放在malloc堆,減少區域性變數對函式呼叫棧的使用

5、size_t同本機的unsigned int

6、const限制符,變數是唯讀的,初始化後不能被改變,具有變數性質,命名空間作用域。

const int*p;指向const類物件

int*const p;常指標,指向後不更改,乙個51微控制器程式

unsigned char code cmd0 = "buzz on"; //開蜂鳴器命令

unsigned char code cmd1 = "buzz off"; //關蜂鳴器命令

unsigned char code cmd2 = "showstr "; //字串顯示命令

unsigned char code cmdlen = ;

unsigned char code *cmdptr = ;

7、結構體自引用只能引用指標,指標的長度是已知,對指標型別解釋實在結構體定義完成後需要的

8、結構體的複製這一點網上很多說法下面是我用過場合

typedef struct

pathdata, *ptrpathdata;

typedef

struct

pathmes, *ptrpathmes;

#define s_pdata_cur_inhrt spathdata[curstrunum]

#define s_pdata_cur_cp spathdata[curstrunum + *(pathoffset + mesbitnum)]s_pdata_cur_cp =s_pdata_cur_inhrt;//結構體賦值類似記憶體複製,如此而已

s_pmes_snip_cp =s_pmes_cur_inhrt;//結構體裡有指標,複製前後兩個指標指向同一片區域,根據需要處理就可以了

*(spathmes[(nosonindex[i])].ptrspathdata) = *(spathmes[(sesonindex[i])].ptrspathdata);//

data內容替換

spathmes[(sesonindex[i])].ptrspathdata = spathmes[(nosonindex[i])].ptrspathdata;//

指向data的指標替換

9、typedef習慣

typedef struct newstruct_snewstruct_s;//_s結尾

當然,有人習慣用指標,不過具有全域性性質的內部細節需要被使用者所知的結構,少用typedef的話直觀一些,typedef作用域與變數相同

10、從乙個函式返回乙個結構可以返回多個值

mysql的簡單用法 mysql簡單用法

刪除使用者 drop user jack drop比delete刪除的優勢在於drop可以刪除使用者的許可權,更加徹底 更改使用者名稱 rename user jack to jacknew 使用者的都存在與user表中,更改名稱,許可權不變 更改使用者密碼 update mysql.user se...

linux下陣列的簡單用法

陣列的宣告1.declare a array name 注意 array name 是陣列名 2.array name 陣列的賦值第一種 array name a b c d 注意 元素之間是空格隔開的,不是逗號 第二種 array name 0 a array name 1 b array nam...

oracle cursor 簡單用法

procedure changespecialdiscount compid in invarchar2 ccid in invarchar2 cono in invarchar2 is sum cc all number 14 4 0 wsp disc number 14 4 wspcl disc...