學習筆記
-
指針操作符
-
指針與常量
指向常量的指針:指針定義爲指向常量,即不能通過指針修改指針指向的值,只是不能通過解引指向常量的指針並改變指針所引用的值,但可以改變指針,因爲指針的值不是常量。
const int *pci; // 指向整形常量
數據類型與const關鍵字的順序不重要。const int *pci;等價於int const *pci;// 注意,常量可以通過非常量指針進行修改 const int number = 200; int *pi = &number; *pi = 100; printf("%d %d\n", *pi, number); // 輸出 - 100 100
指向非常量的常量指針:
-
Redis 簡單動態字符串 SDS
struct sdshdr{
int len;// 已使用的長度
int free;// 未使用的長度
char buff[];// 存儲字符串的字符數組,lenth(buff) = len + free + 1('\0')
};
優點:
額外分配一位存儲’\0’,用以與C字符串保持一致,兼容部分C字符串函數
常數複雜度獲取字符串長度
杜絕緩衝區溢出(C 緩衝區溢出,內存泄露)
通過空間預分配,惰性空間釋放減少修改字符串時帶來的內存重分配次數
二進制安全
心得體會
SDS
C 語言指針操作符