其实很早就想总结下这些散碎的东西,我是一个菜鸟,不妥之处望大家指出来
C语言中的关键字整理 auto 作用 :auto的意思是自动的意思,c语言是面向过程的,会有很多部分的模块函数,每个函数都有其 生存周期(作用域),在函数生命周期中申明的变量通常叫做局部变脸也叫做自动变量, 例子: #include <stdio> { int a=100; printf("%d",a); return 0; } 在a前面加不加关键字auto都没有影响。 2:register:作用可以快速提高访问的效率,寄存器访问,寄存器是 CPU的亲信。 3 goto: 基本不用的一个关键字,程序的质量和关键字goto出现在的次数成反比 列: #include<stdio.h> void func(int n) { int *p=NULL; if(n<0) { goto STATUS:
} p=malloc(sizeof(int)*n); STATUS: p[0]=n; } int main() { func(1); func(-1); return 0; } 参考上述程序可以得知,假如n<0的话直接跳到标签STATUS处执行, 这样由于P是个空指针,没有申请内存,所以程序奔溃直接跳出,强烈建议不要用这个关键字 4 void 关键字 <1>修饰函数的话表示函数没有返回值,修饰参数的话表示不接受参数,void类型的变量是? 环峙淠诖娴摹K闶莄语言的灰色区域, <2>void*指针 该指针用于左边值时时接受任意类型的指针 作为右值得时候需要强制类型转换。 void*可以接受任意类型的指针地址的值但是需要强制类型转换 #include<stdio.h> void *memset(void *p,char *int size) { void *ret=p; char *dest=(char *)p; int i; for(i=0;i<size;i++) { dest[i]=v; } return ret; } int main() { int a[5]={1,2,3,4,5}; int i; for(i=0;i<size;i++) { printf("%d",a[i]); } memset(a,0,sizeof(a));
for(i=0;i<size;i++) { printf("%d",a[i]); } return 0; } 5 extern 关键字 主要用于申明外部定义的变量和函数 ,告诉编译器用C方式编译。 在一些C++和变种的C编译器时和标准C编译的不一样,用extern 是以标准C的方式来编译 6 sizeof 是编译器内置的关键字不是函数。用于计算相应的实体所占内存大小 在编译期间已经确定, 7 const修饰变量 const 修饰变量是只读的本身还是变量, 并且会占用内存空间,本质上const只对编译器游泳,运行时没有 用处,他的变量值不能直接赋值,想要改变他的值可以通过指针的方式改变, #include<stdio.h> #include <malloc.h> int main() { const int c=1; int *p=(int *)&c; printf("%d",c); *p=3; printf("%d",c); return 0; } const 修饰数组时空间无法改变,但是可以通过指正改变他的值,其余和内存 是不可改变的。 const修饰指针 列入: const int *p //p可变,但是p指向的内容不可变 int const *p //p可变,但是P指向的内容不可变, int * const //p不可变,但是p指向的内容可变 const int *const p p和p指向的内容都不可变。