初始C语言(3)

初始C语言(3),第1张

1、 *** 作符--单目 *** 作符,只有一个数的 *** 作符。


! 逻辑反 *** 作,C语言中0就是假,非0为真。


sizeof 计算 *** 作数的类型长度,以字节为单位,()里可以是变量名,或者变量类型。


int a=10;
printf("%d\n",sizeof(a));
printf("%d\n",sizeof(int));

~ 对一个数的二进制按位取反,01010101--->10101010

++ 前置++,先++,后使用;后置++,先使用,后++

先a=a+1,再把b=a;

先把b=a,再a=a+1;

--同++的使用;

()  强制类型转换,将后面的数强制转换类型

int a=(int )3.14;

条件(三目) *** 作符 :exp1?exp2:exp3-----表达式1为真,则执行表达式2,若为假,则执行表达式3。


,  逗号表达式,从左向右依次计算,整个表达式的结果是最后一个表达式的结果,每个算式都有效,且值已经改变。


int a=1;
int b=2;
int c=3;
int d=(a=a+b,c=c+a,b=b-2);

 [ ]下标引用 *** 作符

int arr1[]={1,2,3,4,5};
printf("%d\n",arr[4]);

( )函数调用 *** 作符。


2、常见关键字

auto  自动变量,通常省略,例主函数中定义一个变量,定义了自动创建,出了函数自动销毁。


auto int a=10;

 break--跳出循环,常在switch  for  while dowhile语句

case   char  short int long float double signed (有符号的)  unsigned (无符号的)    

enum struct union(联合体)自定义类型

extern 声明外部符号                         register--寄存器

goto 语句      return --返回,使用在函数中。


  sizeof   stcstic  typedef--类型重定义      void--无,空

volatile ;        关键字不可用于变量名,有特殊意义。


(1)、typedef  类型重定义,使用格式如下

typedef unsigned int uint;
int main()
{
uint num2=0;
unsigned int num1=0;
return 0;
}\\num1与num2定义方式不同,但类型相同。


(2)、register  寄存器关键字     寄存器是计算机中的一种存储器,是集成到CPU上的,可以较快读取数据。


  int mun=10;存储在内存中,若需要频繁调用,改到寄存器中,建议定义为register int num=10; 起建议作用,建议将num的值放在寄存器中,最终是由编译器决定的。


寄存器变量,不能取地址,因为取地址只有在内存上才有地址,寄存器是集成在CPU上的。


(3)、stastic-----静态的

  修饰局部变量-称为静态局部变量,使函数内部创建的局部变量一直存在,每次调用函数时,使用的是上一次的值。


内存可分为栈区,堆区,静态区。


局部变量,函数的形式参数(临时的变量)都存在栈区中;动态内存分配,malloc,calloc等分布在堆区;静态区放静态变量、全局变量。


 stastic 修饰局部变量的时候,改变了局部变量的存储类型:本来一个局部变量是存储在栈区的,被stastic修饰的局部变量是存储在静态区的。


存储在静态区的变量出了它的作用域变量也不销毁,生命周期较长。


stastic修饰的局部变量的生命周期和程序的生命周期一样。


作用域不变,不可以在其对应的函数外部使用

修饰全局变量---改变了全局变量的外部属性:本来一个全局变量是具有外部链接属性的(定义的全局变量可在另外的.c文件中使用,需要用extern 声明外部符号。


),但被stastic修饰之后就变成了内部链接属性。


这时stastic修饰的全局变量只能在本源文件(.c)中使用,其他文件无法再使用到。


修饰函数---和修饰全局变量是类似的,一个函数本来也是具有外部链接属性的(同样用extern来声明外部链接属性),但当被stastic修饰的时候,外部链接属性就变成了内部链接属性,这个函数就只能本源文件内部使用,其他文件不能再使用了。


vs使用小技巧,从工具-->选项--->常规(可修改主题颜色)、下滑到字体颜色,可自定义编辑框的颜色,字体。


3、#define定义常量和宏

//#define 定义常量
#define NUM 100   
#define STR "hehe"
int main()
{
printf("%d\n",NUM);//被编译器处理后得到 printf("%d\n",100);
printf("%d\n",STR);//被编译器处理后得到 printf("%d\n","hehe");
return 0;

}
//#define 定义宏  宏是 有参数的
#define ADD(x,y)((x)+(y))
int main()
{
int a=10;
int b=20;
int sum=ADD(a,b);//int sum=(a+b);
printf("%d\n",sum);
return 0;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/585413.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-12
下一篇 2022-04-12

发表评论

登录后才能评论

评论列表(0条)

保存