一、函數
void test(void){ //void可以不寫 //函數體中不用寫返回函數(return) }
test(int a, int b){ //返回值類型可以不寫,如果不寫,默認為返回int類型 }
int a = 10; //定義了一個int類型的變量 int *pa = NULL; //定義了一個int類型的指針 pa = &a; //将int類型變量a的地址賦值給pa指針,或者說pa指針指向了變量a *pa = 20; //通過指針簡介修改變量a的值,*稱為取消引用運算符或間接運算符
二、指針
//使用char數組存儲字符串,這個叫做字符串變量 char str1[] = “luoguankun”; //使用指針存儲字符串,它指向字符串的首字母 //這個稱為字符串常量,如果再聲明一個字符串值一樣的指針字符串 //那麼他們會指向同一 個字符串,而不會創建一個新的 char *str2 = “luoguankun”;
int *name[5]; name[1] //取出元素下标為1的元素(指針)
//定義了一個加法函數 int sum(int a, int b){ return a b; } //将定義好的指針指向函數 //首先聲明一個指針 int (*p)(int,int); //其中(*p)代表将來指向的函數,(*p)左右分别為返回值類型和形參定義 p = sum; //将指針p指向test函數 p(10,22); //通過指針調用函數,它等于sum(10,22);當然在調用之前别忘了聲明函數
初學者有什麼不懂的可以私信我,需要系統學習資料和系統學習框架圖的同學,可關注小編頭條号,歡迎留言評論和私信小編。【私信方法】文章上方處點擊“作者頭像”,進入作者首頁,在作者主頁上方點擊“關注”旁邊的“發私信”即可。私信内容:學習幫助。
三、結構體
數組隻能存儲一組同類型的數據,而結構體可以保存一組不同類型的數據
//以下定義沒有分配存儲空間,僅僅定義類型
struct Person { int age; int sex; char *name; };
struct Person p;
p.age = 13; //一種方式 //另一種方式,初始化的同時進行賦值,同時進行分配存儲空間 //結構體的存儲空間是最大成員字節數的倍數,稱為補齊算法 struct Person p = {13,1,”luoguankun”}; p = {13,1,”luoguankun”}; //這是錯誤的!隻能在定義結構體時賦值
printf(“age=%d,sex=%d,name=%s”,p.age,p.sex,p.name);
//定義類型的同時定義變量,甚至可以不寫類型名稱,稱為匿名結構體,它不能被重用 //并且變量名不能重複 struct Student{ int age; }stu;
//定義結構體類型 struct Person{ int age; double height; char *name; }stu; //定義結構體數組變量并賦值初始化 struct Person stu[3] = { {11,12.1,"o"}, {12,12.2,"u"}, {13,12.3,”l"} }; //循環遍曆結構體數組,并打印 for (int i = 0; i < sizeof(stu) / sizeof(stu[0]); i ) { printf("age=%d,height=%.1f,name=%s\n",stu[i].age,stu[i].height,stu[i].name); } //stu[i] = {4,1.22,”dkdk”}; //這是錯誤的 stu[i].age = 4; //這樣是正确的
//省略類型定義,如上,下面使用結構體變量并賦值初始化 struct Person stu = {11, 1.73, "羅冠坤"}; //定義了一個指針p并指向結構體變量stu struct Person *p = &stu; //三種輸出方法都可以輸出數據,作用相同,其中p->成員名的方式較為新穎 printf("age=%d,height=%.2f,name=%s\n",stu.age,stu.height,stu.name); printf("age=%d,height=%.2f,name=%s\n",(*p).age,(*p).height,(*p).name); printf(“age=%d,height=%.2f,name=%s\n",p->age,p->height,p->name); //賦值方法的調用方法相同
int main(){ struct Date{ int year; //年 int month; //月 int day; //日 }; struct Student{ int no; //學号 //嵌套兩個Date來分别表示生日和入學日期 struct Date birthday; //生日 struct Date SchoolDay; //入學日期 }; struct Student stu = { 1, {1989,10,24}, {2009, 9, 1} }; //間接取值,嵌套訪問 printf("學号為:%d\n生日為:%d年%d月%d日\n入學日期為:%d年%d月%d日\n", stu.no,stu.birthday.year,stu.birthday.month,stu.birthday.day, stu.SchoolDay.year,stu.SchoolDay.month,stu.SchoolDay.day); return 0;
希望小編文章的朋友可以關注、收藏、轉發、留言,,也可以私信我(學習幫助),我将給你提高學習上的幫助,最後祝大家閱讀愉快!!
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!