初识C语言1.0

这几天在等考试结果的消息,有点过度焦虑了,阻碍了一下学习的进度,晚上熬夜也多,导致白天学习时犯困想睡觉,复盘这几天的学习,还是要养好一个作息,最大程度的学,避免一些不必要浪费的时间。

这几天初步认识了 选择语句、循环语句、操作符、函数、数组、指针和结构体,个人认为有难度的在于对指针的了解,对计算机内存的一个理解度,得深入理解指针才能够好的运用,以下是各个部分的学习认识。

初识选择语句:顾名思义 就是 做出一个选择 关键字 if;定义格式为: if ( ){ } else ; ()里面是条件,{ }函数体里面是 执行的语句,else 表示不满足时 接下来需要执行的语句 ;举例:

#include<stdio.h>

int main ()

{

int i = 0; scanf(" %d",&i) ; if ( i <30000) { printf( " 拿到一个好offer") ; }

else

printf(" 回家卖红薯\n");

return 0;

}

初识循环语句:while 循环: while ( ) { } ;( )括号内表示循环的条件,{ } 函数体内表示满足循环条件时 执行的语句; 举例:

int main()

{

int i = 0; while ( i< 30000) { printf ( " i = : %d\n",i); i++ }

return 0; }

初识函数和数组:

函数定义的格式: 函数类型 函数名 (参数1,参数2){ 执行的语句 ;} 可以用数学里的函数来理解;

数组定义的格式:数组类型 数组名 [ 数组长度] = { 初始化值 } ; 数组是一组相同数据类型的元素的集合;下标从0开始,用数组的下标来访问数组中的元素;

举例

int add ( int x, int y)

{

return x +y;

}  // 定义了一个函数 add() 函数类型根据返回值来定义;x 和 y  是参数 对应传过来的 a 和 b 的值

int main ()

{

int a = 0; int b = 0; scanf( " %d %d ",%a,&b); int sum = add(a,b); printf(" %d\n",sum);

 // add (a ,b) 表示 把a、b 的值传给函数 add() 让函数add 来完成相应的功能,最后返回一个值

return  0 ;

}

int  main()

{

 int arr [ 10 ] = { 0 }; // 定义了一个整型数组,arr 为数组名、数组长度为 10 ;初始化的值为 0;

int i = 0; while ( i<10) { printf( " %d\n", arr[i]); i++ ;}  //每次打印一个数组的元素, arr[ i ] 表示当i的值为几 时 访问相应的数组里对应的元素;最后将其打印出来;

return 0;

}

初识操作符:C语言中有很多操作符,表示的功能各不相同

算术操作符: 最常见的 + 、 - 、*、/ 、 % ; 用来对变量进行 加、减、乘、除、取余运算。

关系操作符:< 、<= 、 = 、 != 、 >、 >= ; 用来表示大小 。

移位操作符: 对二进制位进行移位: << 左移 、 >> 右移;  举例: a << 1 表示 对变量a 二进制位 左移一位; b >> 1 表示 对变量b二进制位右移一位 。

位操作符:按位与 & 、 按位或 | 、 按位异或 ^;

单目操作符: 运算的对象只涉及到一个,称为单目操作符, 如:sizeof( ) ; 求所占大小,单位是字节;按位取反 ~ 表示 对所有的二进制位 进行按位取反 : 0 变1、 1变0 。

这里需要补充一下,整数在计算机中的二进制表示是什么样的; 一个整数的二进制表示有三种:原码、反码、补码 ; 整数在内存中存储的是补码;对应正整数而言,原码、反码、补码都相同,对负整数需要进行计算; 0 既不是正整数又不是负整数。

举例: -1  在内存中表示为:10000000 00000000 00000000 00000001 (原码) 第一位为符号位,1表示负数、0表示整数;反码:除符号位外 原码按位取反:11111111 11111111 11111111 11111110 (反码); 补码:反码加1:11111111 11111111 11111111 11111111 (补码)。

逻辑操作符:逻辑与:&& ; 逻辑或:| | ; 只表示真假;&&表示两边都必须为真,才返回非零数,如果有一个为假,则返回0, 0表示假;非零表示真。 | | 表示只要有一个为真就返回非零数当两个不为真时,才返回 0;

三目操作符(条件运算符):表示为 : ? :   -- 表达式1 ?表达式2 : 表达式3 ; 意义为 当表达式1 成立时 ,返回表达式2的结果,当表达式1不成立时,返回表达式3 的结果; 举例: a >b ? 1 : 0 。当a >b 时 ,返回1,否则返回 0;

逗号表达式:(表达式1 ,表达式2,表达式3) -- 从左至右依次运算,整个表达式的结果 等于最后一个表达式的结果,在此处就是表达式3的结果。

函数调用操作符: ( ); 具体为 函数名 ( ){ } ; () 括号里面一般是传过来的参数,{ } 里 是需要执行的语句。

下标引用操作符: [ ] 一般用于数组 arr [ 1 ]  -- 表示引用数组arr中的第二个元素,因为数组的下标是从零开始的。

*  解引用操作符 :* 一般用于指针 int *p =&a;  * 说明 p 是一个指针变量,存放的是a的地址,*p可以理解为 引用 a地址里面的值。

 . 操作符: 一般用于 结构体: 结构体变量  . 成员变量 固定格式 ;

初识关键字:关键字为C语言提供的,不可更改,每一个有其作用;

extern 关键字: 用来声明外部符号,一般用于 在另一个源文件中调用其他源文件的全局变量时需要声明,让此源文件知道 这个全局变量的存在。

typedef 关键字: 给类型进行命名,相对于给一个类型取别名 :typedef unsigned int u_int ; 表示将 unsigned int 取一个别名为 u_int 。

static 关键字:用于三种修饰:

1、static 修饰局部变量, 当局部变量被static 修饰之后,生命周期被改变了,出局部范围内不会被销毁,还保留上次之后的值,本质上是改变了局部变量的存储类型,将其放入了静态区。

2、static 修饰全局变量: 当在另一个源文件中引用其他源文件的全局变量时,如果被static修饰之后,将不能够被引用。

3、static 修饰函数:在另一个源文件中引用其他源文件定义的函数时,如果被 static 修饰之后,将不能够被引用。

static 修饰全局变量和函数 本质上是把全局变量和函数的外部链接属性变为了内部链接属性,只能自己源文件内部使用。

define 和 include 是预处理命令,不是关键字 。

初识常量和宏:用define来定义:

1、define 定义符号: #define max 10000 -- 表示 定义了一个符号 max  max对应是 10000。

2、definae 定义宏: #define add( x,y) ( (x) + (y) )  -- 表示定义了一个宏,定义宏时应该把每一个部分都看成是一个表达式 用括号括起来,这样结果是一个整体。

初识指针:

指针的初始化和创建: 指针类型 * 指针变量名 = &变量名  如: int *p = &a -- 表示定义了一个int类型的指针,指针名为 p 存放的是变量a的地址; 指针就是用来存放地址的, 可以理解为, p表示地址,*p 表示引用这个地址里面的值,对其进行使用。%p 是指针的打印格式。

指针的大小在同一平台内是相同的,因为指针是存放地址的,地址有32位和64位,每八位表示一个字节,所以在32位的平台上, 指针大小都是4字节,在64位平台上指针大小都是 8字节。

初识结构体:

struct 表示结构体:用来定义一个新的数据类型。

举例:struct stu  // stu 表示新类型名

{

char name[20]; int age; double score ; // 结构体内部定义的变量为 成员变量。

}; // 注意 新类型的定义需要以 ; 分号结尾!!!

初始化和创建一个结构体类型的变量: struct stu s = { “ zhangsan”,18,88.8}; // 初始化的值需要与 结构体定义的成员类型一 一对应 ;

打印时需要注意: printf( “ %s %d %lf”,s.name,s.age,s.score); 后面打印对应的元素为 结构体变量 . 成员变量。 固定格式

如果用指针来表示的话 struct stu * p = &s ; 输出时 可以用两种形式来表示要输出的元素:

(*p). name, (*p).age,(*p).score  和 p - >name, p - >age, p - >score 这两种表示形式是等价的,(*p) 就表示引用了s 的地址里的值 相等于s, p - > name表示指向 p的地址里面name的值,相当于 指向了s里name的值。   

这几个部分就属指针和结构体不够熟练,理解的还不够透彻,其他部分都有了一个相当于好的理解,对于代码的练习,感觉有明显的进步,很多简单的语句基本上能够实现,对于不熟练的还得继续加深巩固,多练习。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值