IOS之c语言笔记 day01

day01

c语言基础

常用快捷键

shift 切换中英文
windows 相当于mac中的command
command + q 退出程序
command + c 复制
command + v 粘贴
mac中enter重命名

mac中常用指令
./ 当前目录
../ 上一级目录
/ 根目录
mkdir 创建目录
rm 删除目录
touch 创建文件
open 打开文件
pwd 显示当前路径
ls -l 查看当前目录中的所有文件及目录
ls 查看

XCode显示行号

XCode - preference - TextEditing - show line numbers

Mac安装CommandLineTools

 方式一
    终端安装:
      sudo xcode-select --install

 方式二
    finder--GOTO-/System/Library/CoreServices --打开 Install Command Line Developer Tools.app

程序的编译链接运行

编译

cc -c .c(file) --->> soure to .o

链接

cc .o(file) --->> .o to .out

运行

./a.out(默认生成的就是这个)

编译+链接

cc .c(file)

运行

./a.out

编译+链接+命名 (把编译和链接生成之后的文件给删除掉了)

cc .c(file) -o a3.out
./a3.out 

编译+命名

cc -c .c(file) -o a3.o
cc a3.o
./a.out

经验收集

输出语句中有特殊的输出需要注意如下:
/
例:
printf("*********** \n /hello \n *********** \n");


编译只会检查源代码中的语法问题,编译失败不会产生.o文件
能编译不一定能运行,就要有警告信息就一定会编译不通过

关键字

是 c 语言提供特殊信义的符号,也叫"保留字"
关键字全部小写
在xcode中显示的是红褐色

标识符是程序员自定义的一些符号和名称
 例: 函数名称

关键字是c语言默认提供的符号,标识符是程序员自定义的

 只要给事物贴标识符,就可以根据这个来区分事物

命名规则

只能由26个英文字母的大小写、10个阿拉伯数字0~9、下划线_组成

命名规范(最好遵守)

     尽量起个有意义的名称,比如一个完整的英文单词,别人一看这个名称就能才能这个标识符的作用。如果不懂英文,你也可以用拼音,尽量不要起像abcde、sfsdfsdf等这类看起来没有意义的名称
   如果标识符中含有多个单词,可以使用驼峰标识(除开第一个单词,后面每个单词的首字母都是大写):firstName、myFirstName,或者使用下划线_来连接:first_name、my_first_name

注释:

  • 解释代码
  • 单行注释 //
  • 多行注释 /**/

- 注释掉的内容不会参与编译,编译的时候会忽略注释

练习

1.c语言

        #include <stdio.h>    
        int main()
        {
            printf("hello\n");
            return 0;
        }

2.java

        class Demo{
            public static void main(String[] args){
                System.out.prinfln("hello");
            }
        }

3.objective-c(OC)

       ` #import <Foundation/Foundation.h>`   
        int main()
        {
            NSLog(@"hello");
            return 0;
        }

数据

- 静态数据: 一般都是以文件的形式存储在硬盘上

- 动态数据: 在程序运行过程中不断产生在临时数据。运行在内存中

1. 软件被关了 
2.设备被关了
内存的访问速度比硬盘访问的数据要快
程序是安装在硬盘运行在内存
  android 的三级缓存
加载: 内存-sd卡-网络
    下载: 网络-sd卡+内存
  • bit 比特位
    • Byte 字节
    • 01010100 = 1字节
    • 1KB = 1024B
    • 1MB = 1024KB
    • 1GB = 1024MB
    • 1TB = 1024GB

C语言的数据类型

- 基本数据类型

    整数类型:int
    浮点类型: 
     单精度float(默认6位),以f结尾 
     双精度double
    字符型:char

- 指针类型

- 构造类型

把多种基本数据类型凑合成的一种新的类型`

- 指针类型

 C语言中没有boolean类型可以使用int类型来模拟
   0 暂停 
   1 开始

常量

 就是些固定的数据
 存储经常变动的不确定的数据
 变量就是代表  内存中的一块存储空间
  定义变量的目的是为了在内存中申请一块内存空间(地址空间)
常量类型的分类:
  整数类型、浮点类型、字符类型('')、字符串类型("")
  只要有不确定的数据就应该定义变量来保存
变量的定义
  变量类型 变量名;
  变量在定义之后在内存中就有存储空间了
类型的作用

限定变量在内存空间中申请的空间大小(类型不同申请的内存空间不同),节省内存空间

int: 4 Byte
char: 1 Byte

变量的输出

  • 浮点型: %.nf .n小数的位数
  • 浮点默认是6位小数
  • 整数类型使用%d/%i都是可以的
  • 点位符位置的数据使用常量也是可以的

练习

    int score = 100;<br/>
    float f = 32.5f;<br/>
    double d = 3.1415926;<br/>
    char name = 'c';<br/>
    printf("score:%d\n",score);<br/>
    printf("f:%.2f\n",f);<br/>
    printf("d:%.10f\n",d);<br/>
    printf("name:%c\n",name);<br/>     
    score:100<br/>
    f:32.50<br/>
    d:3.1415926000<br/>
    name:c<br/>

变量的作用域

变量在函数中的作用域

1.作用域(作用范围)

从变量定义的那一行开始,一直到所在的代码块结束<br/>
分配存储空间也是从定义变量的那一行开始分配的

2.代码块

   及时回收不再使用的变量,为了提升性能<br/>
   代码块: 限制代码的作用域

3.不同类型所占据的存储空间(64位编译器)

char 1
int 4
float 4
double 8    

练习:交换两个变量的值(两种方式)

第一种方式(需要定义新的变量)

/*
 a = 10
 b = 11
 交换之后
 a -> 11
 b -> 10
 原理:
 交换两个杯子中的水
 */

int main()
{
    // 交换之前
    int v1 = 10; 
    int v2 = 20;
    printf("change before:%d\n",v1);
    printf("change before:%d\n",v2);

    // 第一种交换方式
    // 交换之后
    int tmp = v1;
    v1 = v2;
    v2 = tmp;
    printf("change after:%d\n",v1);
    printf("change after:%d\n",v2);
    return 0;

}

第二种方式(不需要定义新的变量)

/*
 a = 10
 b = 11
 交换之后
 a -> 11
 b -> 10
 原理:
 交换两个杯子中的水
 */
int main()
{
    int v1 = 10;
    int v2 = 20;
    printf("v1 change before:%d\n",v1);
    printf("v2 change before:%d\n",v2);

    // 第二种交换方式
    v1 = v2 - v1; // v1 = 20 - 10 = 10
    v2 = v2 - v1; // v2 = 20 - 10 = 10
    v1 = v1 + v2; // v1 = v1 + v2 = 20

    printf("v1 change after:%d\n",v1);
    printf("v2 change after:%d\n",v2);
    return 0;

}

scanf函数

  • printf 输出到终端
  • scanf 接收终端用户的输入

内存以以”字节为单位”

 1个字节8位
  1GB=1024MB=1024*1024KB=1024*1024*1024B
 每个字节都有自己的内存地址,根据内存地址就能找到对应的字节
 相临字节的内存地址是连续的
 内存地址是十六进制的 0x

不同类型占用的字节是不一样的,数据越大,所需要的字节数越多

  • 内存寻址:内存寻找自己的地址
  • 内存分配的时候是从大到小进行分析。(优先分配大的地址给变量)
  • &地址运算符,取得变量在内存中的地址

总结

    1. 内存寻址由大到小,优先分配内存地址比较大的字节给变量
    1. 变量越先定义,内存地址就越大
    1. 取得变量地址:&变量名
    1. 输出地址:%p

java是强类型,变量定义未初始化不可以拿来使用
c是弱类型(变量定义直接拿来使用虽然不报错但是这样做是不对的)

scanf函数使用特点

  • scanf函数只接收变量的地址
  • scanf函数是一个阻塞式的函数,等待用户输入
  • 用户输入完毕后,就会将用户输入的值赋值给number变量

scanf练习

#include <stdio.h>
int main()
{
    // 1.定义两个变量记录用户的输入
    int num1,num2;
    // 2.提示用户输入
    printf("请您输入第一个数字\n");
    scanf("%d",&num1);
    printf("您输入的数字是:%d\n",num1);
    // 3.提示用户输入
    printf("请您输入第二个数字\n");
    scanf("%d",&num2);
    printf("您输入的数字是:%d\n",num2);
    printf("准备对结果进行计算...\n");
    // 4.计算两个数的和
    int sum = num1 + num2;
    printf("计算的结果:%d\n",sum);
    return 0;
}

其它练习总结

    1. 输入字符
    1. 一次性输入多个数值,并且以某些符号隔开
    1. 如果scanf参数中以空格隔开,实际输入可以以空格,tag,回车作为空格符
    1. scanf中不能写\n

输入多个字符练习:

int main()
{
    // 输入字符
    /*
    char c;
    scanf("%c",&c);
    printf("输入的字符:%c\n",c);
    */

    // 连续输入数字
    /*
    int num1,num2,num3;
    printf("请输入多个数字,以#隔开\n");
    scanf("%d#%d#%d",&num1,&num2,&num3);
    printf("num1 = %d,num2 = %d,num3 = %d\n",num1,num2,num3);
    */

    // 连续输入数字
    int num4,num5,num6;
    printf("请输入多个数字,以空格隔开\n");
    scanf("%d %d %d",&num4,&num5,&num6);
    printf("num4 = %d,num5 = %d,num6 = %d\n",num4,num5,num6);
    return 0;
}

结果展示

userdeMac:demos user$ ./a.out
请输入多个数字,以#隔开
25#33#47
num1=25,num2=33,num3=47
userdeMac:demos user$ cc scanf练习3.c 
userdeMac:demos user$ ./a.out
请输入多个数字,以空格隔开
44  22      35
num4 = 44,num5 = 22,num6 = 35
userdeMac:demos user$ ./a.out
请输入多个数字,以空格隔开
22
33
55
num4 = 22,num5 = 33,num6 = 55
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值