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 structpathdata, *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...