关于C的一些基础皮毛

  1. 一个C程序就是由若干头文件(#include)和函数组成,并有且只有一个主函数
  2. 在最新的C标准中,main函数前的类型为int而不是void(表示无类型没有返回值)
  3. 单行注释: //、多行注释: /* */
  4. 标识符:尽量不超8位、分大小写、非关键字、有意义
  5. 变量赋值的两种方式:1.先声明再赋值 2.声明的同时赋值
  6. 基本数据类型分四大类:


  • 普通整型int,字符型char,浮点型float,双精度浮点型double
  1. 常量分为直接常量(即字面量)和符号常量(需要#define 标识符 常量值来定义)
  2. 变量可在编译时可自动类型转换,char类型数据转换为int类型数据遵循ASCII码中的对应值,字节小的可以向字节大的自动转换,但字节大的不能向字节小的自动转换
  3. 强制类型转换((数据类型) (表达式)):必须加括号;不会修改原值;不遵循四舍五入原则
  4. 算数运算符:加+ 减- 乘* 除/ 求余%(运算后的符号取决于被模数的符号) 自增++ 自减--
  5. 关于自增运算符:-/+号在前:先运算再取值,在后则反之
  6. 复合赋值运算符:即在简单运算符前面加=(如+=)
  7. 关系运算符: > >= < <= == !=
  8. 逻辑运算符:与&& 或|| 非!
  9. 三目运算符:表达式1? 表达式2:表达式3
  10. 分支结构:
if (表达式){
    代码块
    if (表达式){  // 嵌套if-else语句
    代码块Inner
    }
} 
[else if (表达式2)]{      // 多重if-else语句
代码块2
}
[else]{
代码块3
}
  1. 循环结构:while循环、do-while循环(先do再循环,while后面需有分号)、for循环(1初始;2判断;3步进,分号不能省略,变量要在for之前定义)
  2. 用循环结构和操作运算符实现水仙花数字:
/*所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数*/
#include <stdio.h>
int main()
{
    //定义三位数num,个位数sd,十位数td,百位数hd
    int num, sd, td, hd;
    //循环所有三位数
    for(num=100; num < 1000; num++)
    {
        // printf("%d", num);
        // 获取三位数字num百位上的数字
        hd =        num/100         ;
        //获取三位数字num十位上的数字
        td =        num/10%10         ;
        //获取三位数字num个位上的数字
        sd =        num%10         ;
        //水仙花数的条件是什么?
        if(hd * hd * hd + td * td * td + sd * sd * sd == num) 
        {
            printf("水仙花数字:%d\n", num);    
        }
    }
    return 0;    
}
  1. 多重循环:一般用2~3层循环,父循环执行一次,子循环需要全部执行完,直到跳出循环
  2. 分支结构switch:
switch(表达式){
    case1 exp1: code1; break;  // case后的各常量表达式不能相同,否则报错
    case2 exp2: code2; break;   // 代码块后面的分号不要忘
    caseN expN: codeN; break;   
    [default: codeX; break;]
}

switch后面的表达式语句只能是整型或字符型
在case后,允许有多个语句,可以不用{}括起来
case和default子句的顺序可以变动,结果不变

  1. goto语句:执行后,程序将跳转到定义的标识符(一般用英文大写)处并执行其后的语句
  2. 函数的定义:
/*其中[]内为可选内容*/
[数据类型说明] 函数名([参数]){    // 数据类型默认是int
    执行代码块;
    return (表达式);
}

自定义函数尽量放在main函数之前,如果在其后需要在前面先声明

形参是用来接收调用该函数时传入的参数
实参是在调用时传递该函数的参数

递归函数:自我调用且有完成状态,具有递推和回推两个阶段

  1. 函数返回值为三目运算符的写法:return 判断?表达式1:表达式2;
  2. 变量存储类别:按生存周期可分为静态存储方式和动态存储方式;按存储类别可分:自动auto(可省略)、静态static(分局部和外部)、来自寄存器register、来自外部extern
    • 静态局部变量属于静态存储类别,只赋初值一次(如无赋值则默认为0或空字符)
    • 只有局部自动变量和形式参数可以作为寄存器变量,不能定义任意多个寄存器变量(有限)
    • 外部变量的意义是某函数可以调用在该函数之后定义的变量
  3. 内部函数:不能被其他源文件调用的函数(也称静态函数),用static定义
    外部函数(系统默认):能被其他源文件调用的函数,用extern定义
  4. 数组:一块连续的、大小固定、数据类型一致的内存空间(数组是相同类型变量集合);
    三种初始化:
    • 数据类型 数组名称[数组长度n] = {元素1, 元素2...元素n}(当元素小于长度,多余的元素默认为0)
    • 数据类型 数组名称[] = {元素1, 元素2...元素n}
    • 数据类型 数组名称[数组长度n];数组名称[0] = 元素1;数组名称[1] = 元素2;数组名称[n-1] = 元素n
      在声明数组后没有进行初始化的时候,static和extern类型的数组元素初始化元素为0,auto类型的数组的元素初始化值不确定

27.字符串是用数组定义的:

法1:
char 字符串名[长] = "字符串值"
法2(在数组中不能写中文):
char 字符串名[长] = {'字符1', '字符2', '字符3', .... '字符n', '\0'}  //注意末尾的\0字符是结束标志

/*字符串数组当作形参时的写法*/
void foo(char stringname[]){
    return;
}

常用字符串函数:strlen(), strcmp(s1, s2), strcat(s1, s2), strcpy(s1, s2), atoi(s1)

  1. 多维数组:数组名后跟n个维度(称作第一维下标...第n维下标),使数组中的元素可以再用下标访问,如下
    int number[2][5] = {{11,12,13,14,15}, {21,22,23,24,25}}
    可看作一个2×5的二位矩阵;多维数组的初始化与数组类似:
    • 数据类型 数组名称[常量表达式1][常量表达式2]...[常量表达式n] = {{值1,..,值n},{值1,..,值n},...,{值1,..,值n}};(必须指定的维数,系统会根据元素总个数分配空间,当知道元素总个数以及列的维数后,会直接计算出行的维数)
    • 数据类型 数组名称[常量表达式1][常量表达式2]...[常量表达式n]; 数组名称[下标1][下标2]...[下标n] = 值;(需要同时指定行和列的维数)
  2. 求二维数组的对角线之和:
#include <stdio.h>
int main()
{
    int arr[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
    int i,j;
    int sum=0;
    for(i=0;i<3;i++)
    {
       for(j=0;j<3;j++){
           if((i+j)%2==0)    //关键点
           sum+= arr[i][j];
       }
    }
    printf("对角线元素之和是:%d\n",sum);
    return 0;    
}
  1. 结构体:是用户自定义的可用数据类型,可存储不同类型变量集合(与数组相反),有几种定义方法:
// 这里是定义了一个结构体类型
struct weapon{
    char name[20];
    int cost;
    char memo[100];
};
// 法1:声明和定义分离的形式
struct weapon weapon_number1;
// 法2:在声明的时候定义,即在尾部加变量名
struct weapon{
    char name[20];
    int cost;
    char memo[100];
}weapon_number2;
// 法3:不指定结构体名字,直接定义变量
struct{
    char name[20];
    int cost;
    char memo[100];
}weapon_number3;

初始化:用{}把常量依次传入,即weapon_number1={"gun", 70, "warning"}
访问成员的值:用.(成员运算符),weapon_number1.name
结构体数组的声明:由结构体组成的数组
struct weapon weapon_numbers[2] // 初始化时需要依次指定6个常量
结构体指针:

// 指针变量c指向结构体weapon_number1
struct weapon * c;
c=&weapon_number1;

//调用结构体成员,可用c->name替代(->称作指向运算符);
(*c).name;  // 指针两侧变量不能省略(因成员运算符.的优先级高于*)
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,185评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,652评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,524评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,339评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,387评论 6 391
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,287评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,130评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,985评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,420评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,617评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,779评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,477评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,088评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,716评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,857评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,876评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,700评论 2 354

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,148评论 0 13
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,516评论 1 51
  • 我特别胆小一人儿,父母的不幸婚姻造成了我从小没有安全感。我勇敢过两次,第一次去追逐爱情,结果弄丢了自己;第二次忠诚...
    半碗馒头阅读 180评论 0 1