黑马程序员-iOS基础-C语言基础(二)

------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

黑马程序员-iOS基础-C语言基础(二)

一、C语言基础语法

1、数据

a.分类

静态数据:一般指永久性数据,存储时间长,以文件形式存储在硬盘上

动态数据(临时数据):程序运行过程中产生的临时数据,一般存储在内存中

                                        程序运行时加载到内存,计算机关闭或程序结束后会被清除

b.数据的单位

B/KB/MB/GB/TB...

1KB=1024B,依此类推

1B=8bit(位)

c.数据类型

基本数据类型:整型int;单精度浮点float,双精度浮点double,字符型char

指针类型:指针型void*

构造类型:数组;结构体struct;共用体union;枚举enum

空类型:void

d.不同类型数据占据的存储空间(64位操作系统下,Mac是64位操作系统)

char字符型:1B

int整型:4B

float单精度浮点:4B

double双精度浮点:8B

2、常量

a.定义:固定的数据

b.分类:int:整型

              double:双精度浮点型,就是小数,非float型以外的所有小数

              float:单精度浮点型,精确度低,也是小数,以f结尾

              char:字符型,单引号括起来的一个字符

              字符串常量:用双引号括起来的一个或多个字符

3、变量

a.定义:可变的数据

b.定义变量:目的:在使用前定义;

                                在内存中分配一块存储空间给变量方便存储;

                                如果定义多个变量,就为多个变量分配不同的存储空间

                     格式:变量类型 变量名;

                          注:变量名属于标识符;

                不同类型的变量占用不同大小的存储空间,声明变量类型可以合理分配内存

c.变量赋值:赋值符号:=

            第一次赋值有初始化的作用,在初始化前,不得使用变量进行操作

            举例:b=a=40;=>a=40;b=a;

d.打印输出:printf函数

            占位符:%d或%i整型变量;

                    举例:printf("分数是%d\n",score);

                    %f浮点型;用来输出小数,默认6位
                              %.2f   两位小数
                              %.4f   四位小数

                    %c字符型

e.变量的作用域:从定义的那一行开始到所在的代码块结束

          内存中的存储空间从定义的那一行进行分配

          作用域最近原则

          注意初始化新分配内存和访问内存的区别

举例:int score=100;
           {
                   int score=200;
                   {
                          score=50;
                   }
                   printf("score=%d\n",score);
           }
           printf("score=%d\n",score);

输出结果为50,100

举例:int score=100;
           {
                   int score=200;
                   {
                          int score=50;
                   }
                   printf("score=%d\n",score);
           }
           printf("score=%d\n",score);

输出结果为200,100

原因:

第一个示例中score=50在于并未新开辟内存空间存储

而是根据就近原则对之前最近的一个score变量进行访问并更改

因此将200变更为50,虽然该段代码执行完成后已经释放内存

但更改后的score=50并未释放,因此会输出50;

第二个示例中50的score变量为新声明的变量,在内存中是单独开辟空间存储

所在的大括号执行完毕后即被释放,因此第一个输出的score变量仍为200。

f.局部变量及全局变量

局部变量:定义在代码块中,仅从定义开始到所在的代码块结尾的范围内有效

全局变量:定义在代码块以外,从声明的那一行开始以后所有的代码都可以使用

g.大括号的作用

大括号可以对代码段进行区分,提高代码的可读性

另外对于已经执行完毕的C语言代码,系统会自动释放其内存

因此对于简单使用后续不在使用的变量和代码,应该用大括号包围起来,以便在运行后释放内存资源

h.值交换操作练习(a=11,b=10交换成a=10,b=11)

第三方变量交换法

[plain]  view plain copy
  1. <span style="font-size:14px;">int a=11;  
  2. int b=10;  
  3. int temp;  
  4. temp=a;  
  5. a=b;  
  6. b=temp;  
  7. printf("%d,%d",a,b);  
  8. </span>  

i.变量内存分析

1)字节和地址

内存以字节为单位进行存储

不同类型的变量占用的字节是不一样的

数据越大,占用的字节数越多

2)变量的存储

内存寻址由大到小,优先分配较大的地址给变量

变量越先定义,内存地址越大

地址是分配的多个字节中最小的那一个

取得变量的地址:&变量名

打印地址的占位符用%p,如:printf("a的地址是:%p\n",&a);

j.没有初始化的变量不要拿来使用,必须先初始化再使用。

 

二、C语言基本运算
1、算术运算

+(加法/正数)

-(减法/负数)

*(乘法)

/(除法)整数除以整数,结果还是整数,1/2=0

%(取余)整数相除之后的余数;%两侧只能是整数;正负值取决于%左侧的数值

使用细节:1.大范围类型值赋值给小范围类型,会自动转换类型并丢失精度,如:int a=10.8;

2.强制类型转换,在值前加(小类型),如:int b=(int)10.6;

3.自动类型提升,小范围类型值与大范围类型值相运算时,会自动提升小范围类型为大范围类型

如double c = 10.6 + 6;

4.运算结果的类型与参与运算的两个值的类型一致

2、赋值运算

1)简单赋值=

2)复合赋值 +=/-=/*=/(/=)

如:a += 5; => a = a + 5;
    a *= 5; => a = a * 5;
    a += 5 + 6 + 4 => a = a + 5 + 6 + 4;

3)运算符顺序:先(),再*/,后+-,同级按从左到右

3、自增自减:最终结果:在变量a基础上增加1或者减小1。注意:常量不能自加自减

a++/a--

++a/--a

区别:运算时a++/a--只用a的值参与运算,++a/--a使用增加或减小后的值参与运算

示例1:

[plain]  view plain copy
  1. int b;  
  2. int a=10;  
  3. b=++a;  
  4. //则a=b=11;先自加,再赋值  
  5. int b;  
  6. int a=10;  
  7. b=a++;  
  8. //则a=11,b=10,先赋值,再自加  

示例2:

[plain]  view plain copy
  1. int b;  
  2. int a=10;  
  3. b=(a++)+(++a);  
  4. 则a=12,b=22;  
  5. a++位置为a的初始值10,但是a已经自增至11  
  6. 在++a位置再次自增至12,所以b=22  
  7.   
  8. b=(a++)+(++a);实际也等价于  
  9. b=a++;  
  10. b+=++a;  

4、sizeof函数

作用:计算一个变量或者常量或者数据类型所占的内存字节数

格式:

sizeof(变量\常量)

sizeof 变量\常量

sizeof(数据类型),如int size=sizeof(char);

不能是 sizeof 数据类型

5、关系运算(比较运算)

作用:条件判断,在某个条件成立的情况下才执行某一段代码

条件成立:真;条件不成立:假。

数值都有真假性:非零值都是真,0为假。

比较运算,条件成立就返回1,真;条件不成立就返回0,假

比较运算符:>/>=/</<=/==/!=

使用注意:==和!=优先级相同,</<=/>/>=优先级相同,前者优先级低于后者

相同优先级结合方向:从左往右;关系运算符的优先级小于算术运算符

6、逻辑运算

结果:1真/0假

1.逻辑与 &&:同真为真,有假为假

示例:

int a=10,b=10;

int c=(a<5)&&(++b>=11);

结果a=10,b=10,c=0

因为a<5不成立,c一定为0,所以右侧不会执行

2.逻辑或 ||:有真为真,同假为假

示例:

int a=10,b=10;

int c=(a>5)||(b++ - 11);

结果a=10,b=10,c=1

因为a>5成立,c一定为1,所以右侧不会执行

3.逻辑非 !:原真则假,原假则真

C语言允许如下:

int a=!10;

a=0

7、三目运算符

格式:条件?数值1:数值2

条件成立返回数值1,不成立返回数值2

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值