C語言基礎知識回顧

1、數據類型函數

1.1 基本數據類型

整型:int, long,unsigned int,unsigned long,long long……

字符型:char

浮點型:float, double……

【例子】指針

//no.1
int a,b,c;
a = 1;
b = 2;
c = a + b;

//no.2
char s;
s = ‘a’;
float f;
f = 3.1415;

1.2 結構體類型

定義:用系統已有的不一樣基本數據類型或者用戶自定義的結構型組合成的用戶須要的複雜數據類型。

【例子】code

struct Student{
    int num;
    char name[20];
    int age;
    float score;
};

struct Student s1,s2;
s1.num = 101;
s2.num = 102;

改進:指定新的類型名來代替已有的類型名

typedef int Integer;
typedef float Real;

int i,j; ——>Integer i,j;
float a,b; ——>Real a,b;

使用typedef改進結構體

typedef struct Student{ 
    int num;
    char name[20];
    int age;
    float score;
}Student;

Student s1,s2;
s1.num = 101;
s2.num = 102;

1.3 指針類型

一個變量的地址稱爲該變量的「指針」,專門存放變量地址的一類變量成爲「指針變量」

【例子】內存

//no.1
int *a;
int b = 0;
a = &b;
*a = 1; ——>b = 1;

//no.2
char *c;
char d = ‘a’;
c = &d;
*c = ‘A’; ——>d = ‘A’;

//no.3
typedef struct Student{ 
    int num;
    char name[20];
    int age;
    float score;
}Student;

Student s1;
Student *s1_p;
s1_p = &s1;
s1.age = 23; ——> (*s1_p).age = 23;
             ——>  s1_p->age = 23;

2、函數原型

2.1 被傳入函數的參數是否會改變,執行結果是多少,爲何?

//no.1
void fun(int num){
    num++;
}

int a = 1;
fun(a);
printf(「%d」,a);

//no.2
void fun(int &num){
    num++;
}

int a = 1;
fun(a);
printf(「%d」,a);

//no.3
void fun(int a[]){
    a[0]++;
}

int a[10];
a[0] = 1;
fun(a);
printf(「%d」,a[0]);

3、動態內存分配變量

3.1 使用malloc函數分配空間

函數原型:void *malloc(unsigned int size);

函數做用:在內存的動態存儲區中分配一個長度爲size的連續空間,並返回所分配第一個字節的地址

float *f = (float *)malloc(4);
char *c = (char *)malloc(1);
Student *s1_p = (Student *)malloc( ??);

改進:使用sizeof配合malloc分配

定義:sizeof是測量類型或者變量長度的運算符

int num1 = sizeof(float); 
int num2 = sizeof(char);
int num3 = sizeof(Student);

float *f = (float *)malloc(sizeof(float));
char *c = (char *)malloc(sizeof(char));
Student *s1_p = (Student *)malloc(sizeof(Student));

3.2 使用free函數釋放空間

函數原型:void free(void *p);

函數做用:釋放指針變量p所指向的動態空間,使這部分空間能夠被其餘變量使用

float *f = (float *)malloc(sizeof(float));
char *c = (char *)malloc(sizeof(char));
Student *s1_p = (Student *)malloc(sizeof(Student));、
……//此處省略部分操做
free(f);
free(c);
free(s1_p);
相關文章
相關標籤/搜索