這C代碼在VSCode和GDB online上成功運(yùn)行調(diào)試
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了寶清免費(fèi)建站歡迎大家使用!
/******************************************************************************
Welcome to GDB Online.
GDB online is an online compiler and debugger tool for C, C++, Python, Java, PHP, Ruby, Perl,
C#, VB, Swift, Pascal, Fortran, Haskell, Objective-C, Assembly, HTML, CSS, JS, SQLite, Prolog.
Code, Compile, Run and Debug online from anywhere in world.
*******************************************************************************/
#include <stdio.h>
#include <malloc.h>
#include <string.h>
typedef struct Staff_t{
char* name;
char sex;
short age;
float salary;
char* date;
} STAFF_T;
void print_msg(STAFF_T const *p); // 結(jié)構(gòu)體指針作為函數(shù)參數(shù)的使用例子
int main()
{
int size;
//STAFF_T sta; // 定義一個結(jié)構(gòu)體
//staff = &sta; // 另外一種結(jié)構(gòu)體初始化
STAFF_T* staff = NULL; // 定義一個結(jié)構(gòu)體指針,并初始化為NULL;
// 為結(jié)構(gòu)體申請內(nèi)存空間,需要強(qiáng)制類型轉(zhuǎn)換(這里為結(jié)構(gòu)體指針類型),注意malloc成功返回字節(jié)數(shù),失敗返回NULL
staff = (STAFF_T*)malloc(sizeof(STAFF_T));
// 判斷是否成功申請空間,只有申請成功才能使用,這一步很重要,許多人都容易忘記
if (staff == NULL)
{
printf("malloc(STAFF_T) ERROR\n");
return -1;
}
// 這里幾行調(diào)試用,打印出在32/64位系統(tǒng)中一些數(shù)據(jù)類型所占用的內(nèi)存空間大小不同
size = sizeof(STAFF_T);
printf("STAFF_T size = %d\n",size);
printf("SIZEOF:\n char*:%lu, char:%lu,short:%lu,float:%lu \n",sizeof(char*),sizeof(char),sizeof(short),sizeof(float));
staff->name = (char*)malloc(20*sizeof(char));
// 在C語言中,staff->name以下的兩種賦值方式都可以
staff->name = "duruofei";//strcpy(staff->name, "duruofei");
staff->sex = 'M';
staff->age = 29;
staff->salary = ;
staff->date = (char*)malloc(20*sizeof(char));
strcpy(staff->date,"2021-12-09");//strcpy(staff->date, "2021-12-09");
// 傳遞結(jié)構(gòu)體指針
print_msg(staff); // 參數(shù)為指針常量,因?yàn)檫@里只是讀取staff的值,而不希望修改staff的內(nèi)容
// 最后釋放指針,并賦值為NULL。因?yàn)橹羔榝ree后指針?biāo)赶虻膬?nèi)存地址可以被其他變量使用,但指針本身還是指向原來地址,還可以使用,防止野指針
free(staff);
staff = NULL;
printf("Hello World\n");
return 0;
}
/**
* function: print_msg
* input: STAFF_T const *
* ouput: none
* descreption: print massage
*/
void print_msg(STAFF_T const *p)
{
// 參數(shù)為指針常量,因?yàn)檫@里只是讀取p的值,而不希望修改p的內(nèi)容
if (p == NULL)
{
printf("print_msg: p is NULL\n");
}
printf("Name:%s, Sex:%c, Age:%d, Salary:%0.2f, Date:%s\n",\
p->name, p->sex, p->age, p->salary, p->date);
}
當(dāng)前名稱:C/C++語言結(jié)構(gòu)體指針的使用
文章路徑:http://chinadenli.net/article20/dsoipco.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、軟件開發(fā)、網(wǎng)站維護(hù)、App設(shè)計(jì)、響應(yīng)式網(wǎng)站、
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)