c语言养成记 day2

初识c语言

首先我们分清楚一下’0‘,’\0‘,0三者的区别,第一个是字符0其ASC码值对应48,第二个是字符串的结束标志,作为转义字符,第三个就是普通的数字0。

这里有一个关于调用函数判断最大值的简单程序

int MAX(int x,int y){

if(x>y)

return x;

else

return y;}

int main(){

int num1=10;

int num2=20;

int max=0;

max=MAX(num1,num2);

printf("max=%d\n",max);

return 0;}

我们再来看上次说到的单目操作符:+,-,!,&,sizeof ,  ~,++,--,*

首先看sizeof,sizeof具备计算变量所占用字节的功能,例如int a=4;sizeof(a)=4等价于sizef(int)等价于sizeof  a但是sizeof  int 是不行的;定义一个数组int arr[9]={1,2,3,4,5,6,7,8,9},sizeof(arr)/sizeof(arr[0])等于元素个数。

~:对二进制按位取反。

关于计算机存储二进制和使用.打印的二进制是不同的,计算机在内存中存储的时候,存储的是二进制的补码,而在c之中使用和打印的时候是原码。so ,看下面这个程序int a=0;32位0

int b=~a;32位的1

printf("%d\n",b);

输出的结果是-1;因为当b存储a被取反后的数是11111111111111111111111111111111,

但c中打印的时候需要把这个数的原码算出来,即先减一得到反码1111111111111111111111111111110,之后再将除了首位符号位之外的数取反得到原码10000000000000000000000000000001。

最后的结果便是-1.

++分为前置++和后置++,即a++和++a,a++是先使用a的值再将a+1,++a是先将a+1再使用a的值。例如:int  a=10; int b=++a;最后输出的结果是a=11,b=11;但是int  a=10; int b=a++;最后输出的结果是a=11;b=10.--类似。

*:

(类型):强制类型转换,例如 int a=3.14,本来3.14是一个double类型,但是给他定义一个int类型,此时编译器可能就会有警告出现,但我们不想要警告的话可以把他强制转换成为int类型,即int a=(int)3.14

关系操作符:(>,>=,<,<=,!=,==)

逻辑操作符:&&,||(逻辑与或)只关注真假,注意区分按位&和按位|

例如:int a=3;int b=5; int c=a&&b;此时的c就等于一,因为非0即真在C语言之中。

条件操作符:exp1?exp2:exp3 : 表示如果exp1表达式为真,则exp2,否则exp3

逗号表达式:exp1,exp2,exp3..........

可标引用操作符:arr[4],[]即下标引用操作符。

函数调用操作符:()

.和→都是结构体有关操作符。

常见关键字:auto-局部变量定义前自动都会有auto;break;case;char;const(常变量定义);continue,default,do,double,else,enum,extern,float,for,goto,if,int,long,register(寄存器),return,short,signed,sizeof,static(静态),struct(结构体),switch,union,unsigned,void,volatile,while

硬盘→内存→高速缓存器→寄存器   访问运行速度有慢到快

register int a=10;//建议把a定义成寄存器变量

typeof//类型重定义  例如typeof unsigned int uint;

extern//声明外部符号,要想在其他文件定义的可以在此文件使用就必须加外部声明

static//1.修饰局部变量时使得局部变量生命周期变长;2.修饰全局变量的时候改变了变量的作用域,使得静态的全局变量只能在自己所在的源文件内部使用;3.修饰函数的时候改变了函数的链接属性(外部链接属性)。

宏定义,#define 前面定义的会替换成后面的,例如#define MAX 10;

#define min(x,y) (x<y?x:y)

指针:在我们生活中我们想要找到一个人的话首先我们肯定要找到这个人所在的地址,例如某某大学2栋151c,在c语言中也是一样的   首先我们要知道计算机时如何产生的地址,我们的计算机有32位和64位的计算机,我们拿32位举例32位计算机表示其有32根地址/数据线,所以我们就把它分成32个小房间

就像这样,我们规定一个小房间就是一个字节也就是8bit,然后c中设立了一种变量是用来存放地址的,我们把它叫做指针变量,例如 int a=10;int* p=&a; 这里我们设立了一个p变量用来存储a的地址,我们要注意这里的int*是定义一种类型 而真正的指针变量是p而不是*p!那我们设立指针变量的目的就只是别的东西的地址拿来存进来吗,当然不是的。我们可以顺着这个指针变量找到原来的a这里就不的不说一个操作符了,那就是*解引用操作符:看下面的程序int a=10; int *p=&a;*p=20;

那么指针变量的大小呢?首先我们要明确指针变量里面存的是地址,

所以32位时,指针变量大小是4个byte,因为四个byte就可以找到任何地址的组成结果;而64位的指针变量大小是8个byte。

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值