6.C语言杂项

2017-04-23  本文已影响0人  a_tomcat

多级指针

#include<stdio.h>
#include<malloc.h> 
int main(){
    int i = 5;
    int* p = &i; 
    int** q = &p;
    int*** r = &q; 
    printf("i的值是=%d\n",***r); 
    system("pause");   
}

函数指针

/*
1.定义int (*pf)(int x, int y);
2.赋值 pf = add;
3.引用 pf(3,5);
*/
#include<stdio.h>
#include<malloc.h>

int add(int x,int y){
     printf("x+y=%d\n",x+y);
}
      
int main(){
    int (*pf) (int x ,int y);
    pf = add;//函数名就是函数的首地址,函数指针其实就是函数的首地址
    pf(3,6);
    system("pause");   
}

结构体

#include<stdio.h>
struct Student
{
    int age; //4
    float score; //4
    long id; //4
    char sex; //1 
};

int main(void)
{
    struct Student st={80,55.6f,10001,'F' };
    printf("age = %d\n", st.age);
    // 结构体的长度gcc+编译器做了数据字长对齐优化,提高访问效率
    printf("结构体的长度 %d\n",sizeof(st)); 
    system("pause");
}

联合体

#include <stdio.h> 
main( )
 {
     struct date { int year, month, day; }today; 

     //union节省内存空间, 复用内存空间,每次只可使用union中的一个变量,union的长度为最长数据类型的长度
     union { long i; int k; double d; } mix;  
     
     printf("date:%d\n",sizeof(struct date)); 
     mix.d=923456789.123;
     printf("mix:%d\n",mix.k); 
     printf("mix:%d\n",sizeof(mix)); 
     system("pause"); 
} 

枚举类型

#include <stdio.h>

enum WeekDay
{
Monday=1,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday
};

int main(void)
{
  //int day;
  enum WeekDay day = Sunday;
  printf("%d\n",day);//打印结构 7
  system("pause");
  return 0;
}

typedef:给类型起一个别名

int mynameveryverylongmethod(int x,int y){
     
}
typedef mynameveryverylongmethod vvl;
typeof.png
上一篇 下一篇

猜你喜欢

热点阅读