c 总结

C-总结

 
 

 

#pragma mark - 第一章:C基础

void func1();

void func1()

{

    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    int a = 030;        // 以0开头得数是八进制的数,计算的时候要换算成10进制进行计算

    int b = a * 10;

    printf("%d", b);    // 此时打印出来的结果是240

    

    

    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    // 注释的嵌套问题

    // 1. 单行注释可以嵌套单行注释

    // 2. 单行注释可以嵌套多行注释

    // 3. 多行注释可以嵌套单行注释

    // 4. 多行注释不可以嵌套多行注释(注意项)

    

    

    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    int c = 10;

    c++;

    ++c;

    // 注意递增、递减运算符在前在后的两种情况,一种是返回新值,一种是返回旧值,还需要注意,不管是返回新值还是返回旧值,运算完之后,c的值都会发生改变

}

 

 

#pragma mark - 第二章:分支结构

void func2();

void func2()

{

    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    int a = 10, b = 20;

    BOOL result = (a++ > 100 && b++ > 20);

    printf("result = %d a = %d b = %d\n", result, a, b);

    // 结果如下,注意 -短路- 情况,逻辑或‘||’也是一样的

    // result = 0 a = 11 b = 20

    // '&&':一假即假,全真则真

    // '||':一真即真,全假则假

    

    

    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    enum Season {

        spring,

        summer = 4,

        autumn,

        winter

    };

    printf("autumn = %d", autumn);

    // 结果: 需要注意的是,枚举变量的值是上一个值 +1

    // autumn = 5

}

 

 

 

#pragma mark - 第三章:循环结构

void func3();

void func3()

{

    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    // 随机数公式:随机出范围在a~b之间的随机数:arc4random() % (b - a + 1) + a;

    int a = 10, b = 100;

    int random = arc4random() % (b - a + 1) + a;

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

    

    

    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    // break; 关键字,跳出本层循环,后面的东西全都不再执行

    // continue; 关键字,跳出本次循环,本次循环后面的东西不再执行,下一次继续执行

    

    

    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    for (; ; ) {

        printf("for循环中的任何条件都可以缺失,只是这种写法会造成死循环\n");

    }

}

 

 

#pragma mark - 第四章:数组

void func4();

void func4()

{

    

    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    int a[5] = { 2, 7, 4, 3, 6 };

    int b[5] = { 2, 7, 4 };

    int c[5] = { 0 };

    int d[]  = { 2, 7, 4, 3, 6 };

    // 注意这些的区别,个数不写的话会自动计算,写了个数不能超,不写的默认是0

    

    

    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    int count = 10;

    // int arr[count] = {0}; // 注意,这种写法是错误的,变量不可以放在数组定义的中括号中,可以是常量和宏定义

    int arr[10] = {0};

#define kArrayCount 10

    int arr2[kArrayCount] = {0};

    

    

    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    // 系统不会检测数组下标是否越界,所以我们程序员一定要注意数组下标越界的问题

    // 数组是一个整体,不能直接参加运算,只能对单个元素进行处理,通常用到数组的地方都会用到循环

    

    

    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    // 冒泡排序写法

    int array[] = {10, 23, 53, 123, 3, 53, 23, 123, 53};

    int arrayCount = sizeof(array) / sizeof(int);

    // 双层循环

    for (int i = 0; i < arrayCount - 1; i++) {

        for (int j = 0; j < arrayCount - 1 - i; j++) {

            if (array[j] > array[j + 1]) {

                int temp = array[j];

                array[j] = array[j + 1];

                array[j + 1] = temp;

            }

        }

    }

    

    

    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    // 字符数组两种写法:

    char str1[] = {'i', 'P', 'h', 'o', 'n', 'e'};

    char str2[] = "iPhone";

    // 字符串默认使用 '\0' 作为结束标示,使用双引号的方式,自带 '\0' , 使用数组的方式,需要手动添加 '\0' 才可以成为字符串

}

 

 

#pragma mark - 第六章:函数

void func6();

void func6()

{

    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    // 在函数调用的时候,只能调用上面的函数,不能去调用下面的函数,如果想要调用下面的函数,需要在上面进行声明

    // 函数可以嵌套调用,但是函数不可以嵌套定义

    

    

    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    // 函数的形参:出现在函数定义中的变量,值是从实参拷贝过来得

    // 函数的实参:在函数调用的时候传递给函数的,可以通过指针的方式修改实参的值

    

    

    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    // 普通变量作为参数的时候,修改形参的值,实参的值不会发生变化

    // 当数组作为参数的时候,修改形参的值,实参的值会跟着发生变化,因为,数组作为参数时候,传递是的数组的首地址,操作的是同一块内存区域

}

 

 

#pragma mark - 第七章:结构体

void func7();

void func7()

{

    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    // 定义类型

    typedef struct {

        char name[30];

        int age;

        float score;

    } Student;

    

    // 创建变量

    Student stu = {"lidaze", 18, 100.0f};

    

    // 访问成员变量,使用 ‘.’ 的方式访问

    printf("name = %s age = %d score = %.2f\n", stu.name, stu.age, stu.score);

    

    

    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    // 结构体是可以嵌套的

    // 访问的时候,使用 '.' 依次找到实例变量进行操作

    

    

    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    // 结构体变量可以直接赋值

    // 我们可以通过把数组放在结构体中,实现数组的直接运算

    

    

    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    // 结构体内存占用

    //  以最大成员变量类型所占空间为分配单位

    // 按结构体成员声明顺序自上而下分配

    // 注:分配空间不足以存储成员变量时,分配新的空间单位

}

 

 

#pragma mark - 第八章:指针

void func8();

void func8()

{

    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    // 指针的算术运算

    int a = 10;

    int *p = &a;

    p++;

    p--;

    // 指针的运算是移动一个单位的长度,这个长度到底是多少个字节,取决于指针的类型

    

    

    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    // '*' 的作用:

    // 在定义指针中,‘*’ 起到告诉编译器,要声明的是一个指针

    // 在指针的使用过程中,使用‘*’,此时‘*’是取值运算符,根绝内存地址,拿出这空间内得内容

    

    

    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    // 指针与数组

    int array[] = {123, 42, 52, 5, 32, 535, 35, 343};

    int *p1 = array;

    // 数组名代表数组的首地址,用指针指向数组的时候,直接把数组名赋给指针变量即可,不需要使用‘&’符号

    // 数组名和指针的使用方式一样

    

    

    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    // 指针与结构体

    

    

    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    // 指针与结构体

    

    

    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    // 详细内容见:http://blog.sina.com.cn/s/blog_9c2363ad0102uxlw.html

}

 

 

 

#pragma mark - 第九章:结构体指针

void func9();

void func9()

{

    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    typedef struct {

        char name[20];

        int age;

    } Student;

    

    Student stu = {"lidaze", 18};

    

    // 指针指向结构体变量,类型需要相同

    Student *p = &stu;

    

    // 使用指针访问结构体成员,很特殊,使用 '->'

    printf("name = %s age = %d\n", p->name, p->age);

    

    

    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    // 宏定义

#define SUM(a, b) ((a) + (b))

    // 使用宏定义的时候需要注意,尤其是带参数的宏,最好把每个参数和最外层都加上小括号,防止出错?

}

 

 

#pragma mark - 第十章:动态内存分配

void func10();

void func10()

{

    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    // 内存共分为5个区:

    // 栈区

    // 堆区

    // 静态区(全局区)

    // 常量区

    // 代码区

    

    

    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    // 堆内存的管理需要我们手动来管理

    int *p = malloc(sizeof(int)); // 分配一块空间

    *p = 123;

    printf("p = %d\n", *p);

    free(p); // 使用完成之后需要使用

    // free(p); // 不允许过渡释放,同时也不允许不释放,会造成内存泄露

    

    // 开辟内存空间的同时,会把每一个字节清零,效率低,耗费时间,?

    int *p1 = calloc(4, sizeof(int));

    

    // 重新分配空间

    p1 = realloc(p1, sizeof(int) * 10);

    

    free(p1);

}

 

 

#pragma mark - 第十一章:函数指针

void func11();

void func11()

{

    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    // 函数指针:即是指向函数的指针

    // 函数指针的提取:返回值类型 (*) (参数类型)

    // void (*) ():  函数void func11()的类型

    // 使用函数类型的时候太麻烦,给函数类型起个别名

    typedef void (*FuncPoint) ();

    

    // 使用指针,指向函数

    FuncPoint p = func4;

    

    // 普通调用函数

    func4();

    // 使用指针调用函数

    p();

    

}

 

 

 

#pragma mark - 主函数

int main(int argc, const char * argv[])

{

    return 0;

}

 

转载于:https://www.cnblogs.com/iOS-mt/p/4091219.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/259726.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows下使用cpanm进行模块安装

windows下使用cpanm进行模块安装要放假了&#xff0c;突然想整理一下手头上的软件&#xff0c;突然发现perl的安装模块这个功能不能用。弄了一下&#xff0c;使得windows 下 perl 的 cpanm能用&#xff0c;避免成天为了依赖痛苦。软件版本&#xff1a;#理论上此方法所有版本通用…

Response缓冲区

1 protected void Page_Load(object sender, EventArgs e)2 {3 //关闭缓冲区&#xff0c;输出会一个一个写出来&#xff08;只有在火狐浏览器中才有效果&#xff09;。4 //Response.BufferOutput false;5 6 //开启缓冲区7 Response.Buffe…

Javascript模块模式学习分享

之前一直也有听说和接触到模块模式、这次整理了一下、感觉蛮有收获的、特来分享。 模块模式很基本的一点就是匿名函数的 闭包、通过这点来实现。 1 //模块模式2 3 var MODULE (function(){4 /*函数默认是返回this的、但是定义了my对象后、return my; 返回值就变成了my对象…

Source Insight基本使用和快捷键

为什么要用Source Insight呢&#xff1f;貌似是因为比完整的IDE要更快一些&#xff0c;比较利于查看大量的代码。 软件的安装很简单&#xff0c;设置好安装目录。 配置好文档路径&#xff0c;当然这个也可以在Options里面改&#xff0c;选Options->Preferences…里面的Folde…

powerquery mysql数据库_window 10 下 --excel | power query 通过 ODBC链接 mysql 数据库

excel链接到mysql的方法有几种&#xff0c;今天主要介绍如何通过ODBC链接odbc是 “开放数据库连接”&#xff0c;你可以通过下载插件使得自己的excel可以连接到不同的数据库。关于版本的选择&#xff0c;就是excel版本obdc版本mysql obdc版本(需要一样)第一步 下载mysql odbc…

table样式

一直以来&#xff0c;css和JS都是软肋&#xff0c;因为需要不得不重新温故。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style type"text/css">table.hover…

MAC和XCODE常用快捷键

摘自&#xff1a;http://www.cnblogs.com/yjmyzz/archive/2011/01/25/1944325.html 1. 文件CMD N: 新文件CMD SHIFT N: 新项目CMD O: 打开CMD S: 保存CMD SHIFT S: 另存为CMD W: 关闭窗口CMD SHIFT W: 关闭文件2. 编辑CMD [: 左缩进CMD ]: 右缩进CMD CTRL LEFT: …

数组与内存控制

注&#xff1a;我已对本文章进行了更新&#xff0c;劳烦移步。 java语言是典型的静态语言&#xff0c;因而&#xff0c;数组也是静态的&#xff0c;即当该数组被初始化之后&#xff0c;该数组的长度是不可变的。java 语言的数组变量是引用类型&#xff0c;什么意思呢&#xff1…

NRedis-Proxy - 高性能中间件服务器

2019独角兽企业重金招聘Python工程师标准>>> 高性能中间件服务器 一、 NRedis-Proxy 介绍 NRedis-Proxy 是一个Redis中间件服务&#xff0c;第一个Java 版本开源Redis中间件&#xff0c;无须修改业务应用程序任何代码与配置&#xff0c;与业务解耦&#xff1b;以Spr…

python图片识别验证码软件_python识别图片验证码

http://robertgawron.blogspot.hk/2010/11/almost-all-sites-use-images-with-text.html图片的识别主要有&#xff0c;去色&#xff0c;减噪&#xff0c;去线&#xff0c;分割&#xff0c;二值化&#xff0c;提取特征码这里比较方便的是使用tesseract1&#xff0c;准备库apt-ge…

POJ_1253胜利的大逃亡

这道题使用BFS做的&#xff0c;刚开始有点不太理解为什么使用队列&#xff0c;一旦遇到可以到达终点的节点就立即返回&#xff0c;找到最短时间&#xff0c;最后明白了&#xff0c;因为在队列里的所有节点一定比队头节点 的时间长。下面是具体代码&#xff1a; #include<std…

博客搬家算法伪码

已有平台&#xff1a;CSDN博客、51CTO、博客园、WordPress不同平台的博客&#xff0c;数据解析方式不一样&#xff0c;数据抓取和存储都是类似的。1.确定博客首页地址a.平台地址比如&#xff0c;CSDN的博客地址是 http://blog.csdn.net/b.账号fansunionCSDN某个用户的地址是&am…

用js做分页,点击下一页时,直接跳到了最后一页——Number()的妙用

Number()的妙用 Number()是javascript中将字符型转换为数值型的函数&#xff1b;问题描述&#xff1a;做分页&#xff0c;用js实现&#xff0c;获取当前页面的值&#xff0c;然后js自加1&#xff0c;可是点击下一页时&#xff0c;直接跳到最后一页。选择跳转到某页的时候&#…

让Apache支持Wap网站

日前搭建一台Wap网站&#xff0c;环境为RedHat EL5ApachePHPMysql&#xff0c;要求支持wml文件。现将涉及到的配置修改记录如下&#xff1a;1、修改Apache的httpd.conf文件&#xff0c;增加如下内容。AddType application/x-httpd-php .wmlAddType text/vnd.wap.wml .wml;chars…

vue传中文标点_vue项目引入第三方高德地图实现标点定位

vue项目中&#xff0c;高德地图使用。引入vue中。异步导入vue中。gaoDe(key) {window.onApiLoaded function () {var map new AMap.Map(container, {resizeEnable: true,center: [113.951955, 22.530825],zoom: 16});}var url https://webapi.amap.com/maps? v1.4.15&k…

CVE-2014-4877 wget: FTP Symlink Arbitrary Filesystem Access

目录 1. 漏洞基本描述 2. 漏洞带来的影响 3. 漏洞攻击场景重现 4. 漏洞的利用场景 5. 漏洞原理分析 6. 漏洞修复方案 7. 攻防思考 1. 漏洞基本描述 0x1: Wget简介 wget是一个从网络上自动下载文件的自由工具&#xff0c;支持通过HTTP、HTTPS、FTP三个最常见的TCP/IP协议下载&am…

java判断某个字符串是否是数字

&#xff08;一&#xff09;利用正则表达式判断某个字符串是否是数字 public static boolean isNumeric(String s) {// 正则表达式return (s.matches("\\d*") && Pattern.compile("[0-9]*").matcher(s).matches());} &#xff08;二&#xff09;利…

mysql-nt.exe w3wp.exe cpu 100%_w3wp.exe(IIS ) CPU 占用 100% 的常见原因及解决办法

对于IIS管理员来说&#xff0c;经常会碰到Web服务器CPU占用100%的情况&#xff0c;以下是个人的日常工作总结和一些解决办法&#xff0c;主要用来剖析w3wp.exe(IIS )占用CPU 100%的一些原因 和解决方案&#xff0c;希望能对你有所帮助w3wp.exe的解释:全名&#xff0c;IIS Appli…

TOP结果详解

2019独角兽企业重金招聘Python工程师标准>>> TOP前5行 top - 16:24:25 up 284 days, 4:59, 1 user, load average: 0.10, 0.05, 0.01 top 当前时间、系统启动时间、当前系统登录用户数目、平均负载&#xff08;1分钟,10分钟,15分钟&#xff09;。平均负载&#x…

BZOJ3236 [Ahoi2013]作业

昨天晚上做的。。。差错一直查到今天 最后没办法问管理员要了数据才知道原来ans数组开小了233&#xff0c;简直沙茶 这道题不就是裸的莫队嘛 ||| 只要用树状数组维护当前的两种个数即可。 1 /**************************************************************2 Problem: 3…