c语言技术点

2017-12-10  本文已影响5人  海在路上

占位符:

指针

指针和指针变量的区别:

  1. 指针就是内存地址。
  2. 内存地址就是内存单元的编号(存放1和0的东西)。
  3. 指针变量就是存放内存地址的变量。
    int i = 10;
    int *p;
    p = &i;
    printf("地址 = %d",p);
    printf("地址所放的值 = %d",*p);
    printf("地址所放的值 = %d",i);
    printf("地址所放的值 = %d",&i);

输出

输出

多级指针:

    //定义一个int类型的变量,并且赋值为100
    int i = 100;
    //定义一个int类型的一级指针变量p1,并且把i的地址赋值给它 
    int* p1 = &i;
    //定义一个int类型的二级指针变量p2,并且把p1的地址赋值给它 
    int** p2 = &p1; 
    //定义一个int类型的三级指针变量p3,并且把p3的地址赋值给它 
    int*** p3 = &p2; 
    //定义一个int类型的四级指针变量p4,并且把p3的地址赋值给它 
    int**** p4 = &p3;

    //多级指针取值 
    printf("****p4的值%d\n",****p4); 

数组

int array[] = {1,1,1,};
int array[] = 

动态分配内存:

// 分配一个int大小的内存。
int* temp = malloc(sizeof(int));
// 移动分配大小
int* array = malloc(4 * 4);
*(array) = 1;
*(array + 1) = 2;
.....

// 重新分配大小
temp = realloc(temp,12);

函数指针:

//定义一个函数
int add(int a,int b) {
    return a + b;
}
main() {
    //定义函数指针
    //返回值类型,变量名可以随便取,函数没有方法体
    int (*point)(int a,int b);
    //给函数指针赋值
    point = add;
    //使用函数指针
    int result= point(12,5);
    printf("result=%d\n",result);
    system("pause");
}

Unition联合体

// 声明联合体的时候不能进行赋值。
union Mix {
    long i;//4个字节
    int k;//4个字节
};

main() {
    printf("mix长度=%d\n",sizeof(union Mix)); 
    union Mix m;
    m.k=100;
    m.k=123;
    printf("m.i=%d\n",m.i);
    printf("m.k=%d\n",m.k);
    system("pause");
}

枚举

/**
    枚举的值是递增的,首元素默认等于0 
 */
enum WeekDay {
    Monday=1,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday
};
main() {
    //enum WeekDay day= Sunday;
    printf("%d\n",Sunday);
    system("pause");
}

Typedef(别名)

typedef int i;//给int类型取了个别名叫i
typedef long l;//给long类型取了个别名叫l

main() {
    //这里i就代表了int类型 
    i a=10;
    //l就代表了long类型 
    l b=1234355466;
    printf("a=%d\n",a);
    printf("b=%ld\n",b);
    system("pause");
}

结构体

struct Student {
    int age;//年龄
    float score;//分数
    char sex;//性别
};
main() {
    //使用结构体,并对变量进行初始化
    struct Student stu= {18,90.9,'W'};
    printf("age=%d\n",stu.age);
    printf("score=%.1f\n",stu.score);
    printf("sex=%c\n",stu.sex);

    //结构体赋值
    stu.age=20;
    stu.score=100;
    stu.sex='M';

    printf("age=%d\n",stu.age);
    printf("score=%.1f\n",stu.score);
    printf("sex=%c\n",stu.sex);

};

结构体指针和多级结构体指针

struct Student {
    int age;//年龄
    float score;//分数
    char sex;//性别
};
main() {
    //使用结构体
    struct Student stu= {18,90.9,'W'};
    //结构体指针
    struct Student* point = &stu;

    //结构体指针取值,(*point)取得是结构体
    printf("(*point).age=%d\n",(*point).age);
    //(*point).age等价于point->age;
    printf("point->age=%d\n",point->age);
    printf("point->score=%.1f\n",point->score);
    printf("point->sex=%c\n",point->sex);

    //结构体赋值
    point->age=22;
    printf("修改后age=%d\n",point->age);
};

http://blog.csdn.net/a_zhon/article/details/53348604

上一篇下一篇

猜你喜欢

热点阅读