C結構體中字串初始化

2021-10-11 21:19:56 字數 807 閱讀 2591

/*

小知識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,否則...