那年大二的基础LinuxC代码,拿出来丢人的biubiubiu~

/*……………………………………………………………………………………………………………………………………………………/



*标题:000


*作者:宕机酱


*完成时间:2015.6.21


*注释:


/…………………………………………………………………………………………………………………………………………………………*/


#include <stdio.h>
int main()
{
int a;
int *p;
p = &a;
*p = 233;
printf("Before *p = 233, *p = %d\n",*p);

a = 2333;
printf("Before a = 2333, *p = %d\n",*p);
printf("看来指针连接的强度真是硬呢。a不是地址,&a才是地址\n");

//p = &21331;   error


printf("Code Access~\n");
return 0;
}


KimonoYan@KimonoYan-virtual-machine:~/vcdir/vc_review$ cat 002_struct结构体.c 
/*……………………………………………………………………………………………………………………………………………………/


*标题:自测_


*作者:宕机酱


*完成时间:2015.6.21


*注释:


/…………………………………………………………………………………………………………………………………………………………*/


#include <stdio.h>
#include <string.h>
struct student
{
int inum;
char cname[3];
int isex;
};


int main()
{
struct student A;
A.inum = 4;
strcpy(A.cname,"ddd");
printf("A.inum = %d,A.cname = %s\n",A.inum,A.cname);

printf("Code Access~\n");
return 0;
}


KimonoYan@KimonoYan-virtual-machine:~/vcdir/vc_review$ cat 003_struct_init.c 
/*……………………………………………………………………………………………………………………………………………………/


*标题:自测_


*作者:宕机酱


*完成时间:2015.6.21


*注释:


/…………………………………………………………………………………………………………………………………………………………*/


#include <stdio.h>
#include <string.h>
struct student
{
int inum;
char cname[3];
int isex;               //经过尝试,此处不允许赋值
}; //记得加分号


int main()
{
struct student A = {1,'2',3}; //和数组无二样
// strcpy(A.cname,"ddd");
*(A.cname+1) = 's';
printf("A.inum = %d,A.cname = %s\n",A.inum,A.cname);
printf("Code Access~\n");
return 0;
}


KimonoYan@KimonoYan-virtual-machine:~/vcdir/vc_review$ cat 004_union.c 
/*……………………………………………………………………………………………………………………………………………………/


*标题:自测_


*作者:宕机酱


*完成时间:2015.6.21


*注释:共用体的元素,对一个进行赋值所有的值都是这个,但数据类型可以不一样




/…………………………………………………………………………………………………………………………………………………………*/


#include <stdio.h>
#include <string.h>
union Myunion
{
int icode;
char ccode;
float fcode;               //经过尝试,此处不允许赋值
}; //记得加分号


int main()
{
union Myunion A;
A.icode =115; 
//A.fcode = 4.4;
printf("A.inum = %d,A.cname = %c,A.fcode = %f\n",A.icode,A.ccode,A.fcode);
printf("Code Access~\n");
return 0;
}




KimonoYan@KimonoYan-virtual-machine:~/vcdir/vc_review$ cat 005_嵌套结构体.c 
/*……………………………………………………………………………………………………………………………………………………/


*标题:自测_


*作者:宕机酱


*完成时间:2015.6.21


*注释:


/…………………………………………………………………………………………………………………………………………………………*/


#include <stdio.h>
#include <string.h>
struct Class
{
int classnum;
int grade;
};
struct student 
{
int snum;
int sname;
struct Class class;
};


union Myunion
{
int icode;
char ccode;
float fcode;               //经过尝试,此处不允许赋值
}; //记得加分号


int main()
{
struct student A;
A.snum = 1001;
A.class.grade = 4;
printf("A.snum = %d,A.grade = %d\n",A.snum,A.class.grade);
printf("Code Access~\n");
return 0;
}


KimonoYan@KimonoYan-virtual-machine:~/vcdir/vc_review$ cat 006_strcut+union.c 
/*……………………………………………………………………………………………………………………………………………………/


*标题:自测_


*作者:宕机酱


*完成时间:2015.6.21


*注释:


/…………………………………………………………………………………………………………………………………………………………*/


#include <stdio.h>
#include <string.h>
struct ScoreForMale
{
int basketball;
int football;
};
struct ScoreForFemale
{
int hula;
int xiuhua;
};


union student
{
struct ScoreForMale m;
struct ScoreForFemale f;  //意义在于节省空间  
}; //记得加分号


int main()
{
union student A[30];
A[1].m.football = 1001;
A[2].f.hula = 4;
printf("A.m.football = %d,A.f.hula = %d\n",A[1].m.football,A[2].f.hula);
printf("Code Access~\n");
return 0;
}




KimonoYan@KimonoYan-virtual-machine:~/vcdir/vc_review$ cat 007_enum枚举.c 
/*……………………………………………………………………………………………………………………………………………………/


*标题:自测_


*作者:宕机酱


*完成时间:2015.6.21


*注释:


/…………………………………………………………………………………………………………………………………………………………*/


#include <stdio.h>
#include <string.h>
enum week
{
MON,TUN,WEN
};
int main()
{
enum week day;
day  = MON;
switch(day)
{
case MON:
printf("1");break;
case TUN:
printf("2");break;
default :break;
}
printf("Code Access~\n");
return 0;
}




KimonoYan@KimonoYan-virtual-machine:~/vcdir/vc_review$ cat 008_int占4Bytes.c 
/*……………………………………………………………………………………………………………………………………………………/


*标题:自测_


*作者:宕机酱


*完成时间:2015.6.21


*注释:


/…………………………………………………………………………………………………………………………………………………………*/


#include <stdio.h>
int main()
{
unsigned short a=-1;
printf("sizeof unsigned int a = %d,a = %d",(sizeof(a)),a);


printf("Code Access~\n");
return 0;
}




KimonoYan@KimonoYan-virtual-machine:~/vcdir/vc_review$ cat 009_void空类型指针.c 
/*……………………………………………………………………………………………………………………………………………………/


*标题:自测_


*作者:宕机酱


*完成时间:2015.6.21


*注释:vo


/…………………………………………………………………………………………………………………………………………………………*/


#include <stdio.h>
void test(void)
{
printf("!!!\n\n\n");
}
int main()
{
//test('s');   //这里会报错
void *pvoid; //p是一个指针,指向一个void型的
int a = 233;
//int b;
pvoid = &a;
//b = pvoid;
printf("*(float *)pvoid = %f\n",*(float *)pvoid);
printf("*(int *)pvoid = %d,此处格式要记住(int *)强制转换成int指针,放于'*'之后,不转换报错\n\n",*(int *)pvoid);
printf("Code Access~:参数为void的函数,为[任意]类型返回值,但该返回值是是无意义的,编译器还是会拦下来\n");
printf("void *p  是p指向一个[任意类型]的数,注意存取类型.取消编译器检查可以帮你从int转float无警告越界。但小心危险\n");
return 0;


}




KimonoYan@KimonoYan-virtual-machine:~/vcdir/vc_review$ cat 010_数据类型转换.c 
/*……………………………………………………………………………………………………………………………………………………/


*标题:自测_


*作者:宕机酱


*完成时间:2015.6.21


*注释:


/…………………………………………………………………………………………………………………………………………………………*/


#include <stdio.h>
int main()
{
auto int a = 3;
float b = 3.5;
void *p = &b;
int c;
c= a+b;
printf("int a = 3  , float b = 3.5 \n");
printf("a+b =(f) %f \n",a+b);
printf("a+b =(d) %d ,可以看出float被当做int解析了一定会出错\n",a+b);
printf("a+b = (d) %d ,用空指针也没有用\n",a + (*(int *)p));
printf("int c = a+b;  c = %d 居然是6!c语言中最难的地方\n",c);
printf("Code Access~\n");
return 0;
}




KimonoYan@KimonoYan-virtual-machine:~/vcdir/vc_review$ cat 011_static变量.c 
#include<stdio.h>
void fun(void );
int main()
{
auto int a;
register int b;
fun();
fun();
fun();
printf("Code Access!  static变量在多次调用函数的时候,仅[第一次]定义并初始化。\nauto int = int   register关键字访问更快,但数量有限且不能定义成double类型");
return 0;
}


void fun()
{
static i=0;
i++;
printf("Now.  i = %d\n",i);
}




KimonoYan@KimonoYan-virtual-machine:~/vcdir/vc_review$ cat 012a_跨文件调用函数1.c 
/*……………………………………………………………………………………………………………………………………………………/


*标题:自测_


*作者:宕机酱


*完成时间:2015.6.21


*注释:


/…………………………………………………………………………………………………………………………………………………………*/


#include <stdio.h>


void fun_b(void);


int main()
{
printf("This is A file.\n");
fun_b();
printf("Code Access~注意使用方法:gcc 012a.. 012b.. -o build ab    ./ab\n多个文件只能保留一个主函数,允许直接/间接访问,但要记得声明、定义、调用缺一不可");
return 0;
}
KimonoYan@KimonoYan-virtual-machine:~/vcdir/vc_review$ cat 012b_跨文件调用函数2.c 
/*……………………………………………………………………………………………………………………………………………………/


*标题:自测_


*作者:宕机酱


*完成时间:2015.6.21


*注释:


/…………………………………………………………………………………………………………………………………………………………*/


#include <stdio.h>
void fun_b()
{
printf("This is B file.~\n");
}


KimonoYan@KimonoYan-virtual-machine:~/vcdir/vc_review$ cat 013a_跨文件引用变量.c 
/*……………………………………………………………………………………………………………………………………………………/


*标题:自测_


*作者:宕机酱


*完成时间:2015.6.21


*注释:


/…………………………………………………………………………………………………………………………………………………………*/


#include <stdio.h>


void fun_b(void);
int a = 0;
int main()
{
printf("This is A file.a = %d \n",a++);
fun_b();
printf("Code Access~注意使用方法:gcc 012a.. 012b.. -o build ab    ./ab\n跨文件变量不能直接用,a.c中的全局变量不能直接在b.c中使用。\n方案1:偷梁换柱,把b.c要用的全局变量放到a.c的一个函数中,让b.c声明并调用a.c中的函数(间接使用)\n方案2:仅需在b文件中[声明]全局变量(extern int a;这样就行了,直接使用)\n");
return 0;
}


KimonoYan@KimonoYan-virtual-machine:~/vcdir/vc_review$ cat 013b_跨文件引用变量2.c 
/*……………………………………………………………………………………………………………………………………………………/


*标题:自测_


*作者:宕机酱


*完成时间:2015.6.21


*注释:


/…………………………………………………………………………………………………………………………………………………………*/


#include <stdio.h>


void fun_b(void);


void fun_b()
{
extern int a;
printf("This is B file.a = %d\n",a);
//printf("Code Access~注意使用方法:gcc 012a.. 012b.. -o build ab    ./ab\n多个文件只能保留一个主函数,允许直接/间接访问,但要记得声明、定义、调用缺一不可");
}




KimonoYan@KimonoYan-virtual-machine:~/vcdir/vc_review$ cat 014_静态全局变量.c 
#include<stdio.h>
void fun(void );


static int siA;
int main()
{
auto int a;
register int b;
fun();
fun();
fun();
printf("Code Access! 普通全局变量在多文件中不能重名,静态全局变量专门用来解决大项目重名问题。\n告诉编译器这个静态全局变量只会在当前文件内使用,绝不可能在其他地方使用。\n");
return 0;
}


void fun()
{
static i=0;
i++;
printf("Now.  i = %d\n",i);
}


KimonoYan@KimonoYan-virtual-machine:~/vcdir/vc_review$ cat 015_const与指针.c 
/*……………………………………………………………………………………………………………………………………………………/


*标题:自测_


*作者:宕机酱


*完成时间:2015.6.21


*注释:注意!这四个写法完全不一样


/…………………………………………………………………………………………………………………………………………………………*/


#include <stdio.h>
int main()
{
const int *p1; // 
int const *p2; //
int *const p3; //
const int *const *p4; //






printf("Code Access~\nconst int *p1           //p是一个指针,指针指向一个const型的数据。P1 -> const int a/b/c...\nint const *p2         //同上\nint *const p3     //我自己理解为int (*const p3),指向一个int型数据,p3本身是常量,指向的数内容可变. \nconst int *const p4  //我自己理解为 const int (*const p4),指向一个int型数据,内容和指针都不可变.\n");
return 0;
}















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值