/*
小知識1: const char *
const char* str 定義的是乙個指向常量的指標。
如果str是區域性變數,則字串會隨著變數所在的函式的退出而自動釋放;
如果str是全域性變數,則程式退出時才自動釋放。
char * __strdup (const char *s)
*/#include
#include
#include
#include
#define name_max 128
typedef
struct test_struct test_struct_t;
test_struct_t *
test_struct_malloc_error_example()
static test_struct_t *
test_struct_malloc()
intmain()
我們定義的字串指標是沒有記憶體空間的,需要先申請空間之後再賦值,於是就發現了這樣乙個字串函式:strdup(str);
strdup()函式會計算出字串的長度,然後呼叫malloc函式在堆上申請相應的空間,最後把字串的所有字元複製到堆上
i.e.
#include
#include
#include
typedef
struct test_struct
test_struct_t;
intmain()
C 列表初始化,字串初始化
列表初始化 int a 0 int a 全面應用 int a int a 0 預設初始化 定義變數時,沒有指定初值,則變數被預設初始化。定義函式體外的變數被初始化為0,函式體內部的內建型別變數不被初始化。字串初始化 string s1 string s2 s1 string s2 s1 string...
C 結構體初始化
今天在看mfc結構時,順便看了看 深入淺出mfc 發現有這麼一行 m pmainwnd new cmyframewnd 乍一看,很正常啊,再仔細一看,貌似 new cmyframewnd 的時候少了一對括號。奇怪!之後又翻了翻書,發現好多處都是這樣的。難道我弄錯了,不可能啊,一般情況下在new乙個新...
c 結構體初始化
在 系統程式設計師成長計畫 看到的,好像有點道理。宣告 struct s 習慣的初始化 struct s h 這種初始化是按結構體成員宣告的順序進行初始化的,即利用了struct記憶體布局的方法。若struct成員順序被修改了,初始化將引入隱患。幸運的話會收到編譯器的warning或error,否則...