目錄
一.define定義常量和宏
定義:宏在c語言中相當於“文本替換”。
#include <stdlib.h>
#include <stdio.h>
//宏在 c 語言裏面相當於“文本替換”
#define MAX 100
#define ADD(x,y) x+y //在這裏不能加分號
int main(){
int sum=10+20;
int sun=ADD(10,20);
printf("%d\n",sum);
system("pause");
return 0;
}
二.指針
在介紹指針之前,先來介紹一下在計算機中及其重要的“馮諾依曼體系結構”。
其簡略圖如下圖所示
可以把內存看做是一個樓層,每一個樓層都有若干個房間,比如101室可以住若干個同學;
房間編號 101 相當於計算機內存中的地址,房間內住的人 類比於內存中的數據;
一個房間的大小是1個字節(8個二進制位)。
隨機訪問:(閃現)以極低的成本訪問內存任何一個地址上的數據
指針:保存的數據的含義,就是內存的一個地址(宿舍房間號)
指針完全可以當作一個普通的整數,只不過,這個整數具有一個特定的含義,表示內存上的地址。
#include <stdlib.h>
#include <stdio.h>
int main(){
int a=100; //有了一個房間,房間號還不知道,房間裏面的人是100
// p這個變量的類型是一個指針. p裏面存的內容就是房間號
//int 類型的指針表示這個房間號裏面住的人是一個int類型的變量
int* p=&a;
printf("%d\n",p);
system("pause");
return 0;
}
另外要說的是,一個十六進制的數字可以表示4個二進制位。
下面我們來看看int*佔用幾個字節(可以看作是房間號,如何去保存)
#include <stdlib.h>
#include <stdio.h>
int main(){
//在32位系統下,一個指針的大小佔4個字節
//在64位系統下,一個指針的大小佔8個字節
//但是在不同的編譯器下也會產生不一樣的結果,在vs運行
//環境下雖說是64位操作系統,但是也有可能出現輸出爲4個字節的情況
printf("%d\n",sizeof(int*));
printf("%d\n",sizeof(char*));
printf("%d\n",sizeof(double*));
printf("%d\n",p);
system("pause");
return 0;
}
三.結構體(很重要)
比如描述學生,學生包含:名字+年齡+性別+學號這幾項信息
其代碼描述如下:
struct Stu{
char name[20];//名字
int age;//年齡
char sex[5];//性別
char id[15];//學號
}
具體代碼實現有:
#include <stdlib.h>
#include <stdio.h>
enum Sex{
//枚舉
FEMALE,
MALE,
UNKNOWN
};
//本質上結構體就是自定製類型,自定製類型的含義要根據具體的
//應用場景來決定.自定製結構體裏面的內容也是由內置類型/其他自定製類型構成的
struct Student{
//寫出結構體中包含的成員
char name[1024]; //1024 Byte ->1 KB
int age;
char id[1024];
enum Sex sex;
};
//上邊的結構體等價於
tepedef struct Student Stdent;
//也可以將上邊兩個代碼進行合併,達到簡化的效果
//typedef struct Student{
//寫出結構體中包含的成員
// char name[1024]; //1024 Byte ->1 KB
// int age;
// char id[1024];
// enum Sex sex;
//}Student;//這裏的名字可以改變,但是在後邊使用時必須與這裏的名字一致 如要改爲Stu
int main(){
Student zhangsan={"張三",18,"1234",MALE};//Stu
struct Student lisi={"李四",18,"1235",FEMALE};
printf("%s,%s\n",zhangsan.name,lisi.name);
system("pause");
return 0;
}
最後,在這裏祝大家中秋節快樂!