初识c语言-day4

初识条件语句

if / if else语句

int main(){
int a=1;
int b=2;
if(a>b)
	printf("%d",a);
else()
	printf("%d",b);
return0;
}

初识循环语句

while

for

dowhile

int main(){
int a=0;
while(a<100){
	printf("在搬砖");
	a++;
	}
if(a>100)
printf("搬完了");
return0;
}

初识函数

例:

int add (int x, int y){
    int z=x+y;
    return z;
}

初识数组

数组:一组相同类型元素的集合

例:int arr[5]={1,2,3,4,5};

char ch[5]={'a','b','c'}; //不完全初始化,空位默认为0.

数组使用下标来访问的(下标从0开始

操作符

  • 算术操作符:+ - * / %

  • 移位操作符:>> <<

    ​ 左/右移位,是指二进制位

    例:

    int a =1	//1的二进制位是00000000 00000000 00000000 00000001
    b = a << 1; 	//左移一位 00000000 00000000 00000000 00000010 (末尾用0补齐)
    
  • 位操作符

    & 按位与

    | 按位或

    ^ 按位异或

  • 赋值操作符

    = += -= *= /= &= ^= |= >>= <<=

  • 单目操作符

  1. sizeof()操作符

    int a=10;
    printf("%d",sizeof(int));	//	4
    printf("%d",sizeof(a));		//	4
    printf("%d",sizeof a);		//	4	,当sizeof的对象是一个变量时,()可以省略
    int arr[10]={0};
    printf("%d",sizeof(arr));		//	40
    printf("%d",sizeof(arr[0]));	//	4
    //一种求数组长度的方法
    int zs=sizeof(arr)/sizeof(arr[0]);
    printf("%d",zs);		//	10
    
  2. ~ 按位取反(二进制位)

    int a=10; 00000000 00000000 00000000 00000000

    b=~ a; 10000000 00000000 00000000 00000001

    补充:原码、反码、补码

    在计算机中是以补码的形式存储的,但是打印是以原码的形式打印的

    例:-1 原码:10000000 00000000 00000000 00000001 //第一位为符号位,其中0表示正,1表示负

    ​ 反码:11111111 11111111 11111111 11111110 //符号位不变,其他0变成1,1变成0

    ​ 补码:11111111 111111111 11111111 11111111 //补码的条件上+1

    正整数的原码、反码、补码相等

    故0的原码和补码都是00000000 00000000 00000000 00000000

    0的补码为11111111 11111111 11111111 11111111

    0的反码11111111 11111111 11111111 11111110

    0的原码为10000000 00000000 00000000 00000001

    即-1

  3. ++ –

    ++a //先++,后使用

    a++ // 先使用后++

    int a=10;
    int b=++a;	//此时a=11,b=11
    int c=b++;	//此时b=12,c=11
    
  4. 强制类型转换

    int a=(int)3.14;//将本来的浮点型转化为整型

  • 关系操作符

    < > <= >= != ==

  • 逻辑操作符

    && 逻辑与

    || 逻辑或

  • 条件操作符(三目操作符)

    exp1 ? exp2 :exp3

    //如果exp1成立,那么就执行exp2语句,整个表达式的值为exp2的值,否则就执行exp3的语句,整个表达式的值为exp3的值

  • 逗号表达式

    int a=1;
    int b=2;
    int c=3;
    int d=(a=b+2,c=a+3,d=c+1);//逗号表达式会从左到右依次执行
    

关键字

  • 不可以自己创建关键字

    关键字不可以作为变量名

    1. typedef 类型重定义

    2. static 静态的

      1. static修饰局部变量

        static int a=1;

      2. static修饰全局变量

        static修饰全局变量,使得这个全局变量只能在自己所在的源文件 (.c) 内部可以使用其他源文件不能使用!
        全局变量,在其他源文件内部可以被使用,是因为全局变量具有外部链接属性但是被static修饰之后,就变成了内部链接属性,其他源文件就不能链接到这个静态的全局变量了!

      3. static修饰函数

        static可以类比修饰全局变量,static修饰全局函数,使得这个全局函数只能在自己所在的源文件 (.c) 内部可以使用其他源文件不能使用!

定义常量和宏

*#*define

  • 定义常量

    # define max 100

  • 定义宏

    # define ADD(x,y) x+y
    int main(){
        printf("%d\n",ADD(2,3));	//5
        printf("%d\n",4*ADD(2,3));	//8 (4*2+3=11)
        return 0;
    }
    

初识指针

内存是电脑上特别重要的存储器,计算机中所有程序的运行都是在内存中进行的所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址

%p 打印地址

& 取地址

int * pa = & a; //其中,*表示pa为指针,int表示pa所指的对象类型为int类型

* pa = 20 ; //* 解引用操作,*pa 通过pa 找到a

指针大小:在36位计算机中,占4个字节

​ 在64位计算机中,占8个字节

初识结构体

struct stu{
    char name[10];
    int age;
    double score;
    
};
int main(){
    struct stu s={"张三"2085.5};	//结构体的创建和初始化
    
    printf("%s %d %lf",s.name,s.sge,s.score);	//架构体.变量
    struct *pa =&stu;
    printf("%s %d %lf",(*pa).name,(*pa).age,(*pa).score);	//(*指针).变量
    printf("%s %d %lf",pa->name,pa->age,pa->score);	//指针->变量
    return 0;
}
  • 17
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值