关于C的一些基础皮毛

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

普通整型int,字符型char,浮点型float,双精度浮点型double
7.常量分为直接常量(即字面量)和符号常量(需要#define 标识符 常量值来定义)
8.变量可在编译时可自动类型转换,char类型数据转换为int类型数据遵循ASCII码中的对应值,字节小的可以向字节大的自动转换,但字节大的不能向字节小的自动转换
9.强制类型转换((数据类型) (表达式)):必须加括号;不会修改原值;不遵循四舍五入原则
10.算数运算符:加+ 减- 乘* 除/ 求余%(运算后的符号取决于被模数的符号) 自增++ 自减–
11.关于自增运算符:-/+号在前:先运算再取值,在后则反之
12.复合赋值运算符:即在简单运算符前面加=(如+=)
13.关系运算符: > >= < <= == !=
14.逻辑运算符:与&& 或|| 非!
15.三目运算符:表达式1? 表达式2:表达式3
16.分支结构:

if (表达式){
    代码块
    if (表达式){  // 嵌套if-else语句
    代码块Inner
    }
} 
[else if (表达式2)]{      // 多重if-else语句
代码块2
}
[else]{
代码块3
}

17.循环结构:while循环、do-while循环(先do再循环,while后面需有分号)、for循环(1初始;2判断;3步进,分号不能省略,变量要在for之前定义)
18.用循环结构和操作运算符实现水仙花数字:

/*所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数*/
#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;    
}

19.多重循环:一般用2~3层循环,父循环执行一次,子循环需要全部执行完,直到跳出循环
20.分支结构switch:

switch(表达式){
    case1 exp1: code1; break;  // case后的各常量表达式不能相同,否则报错
    case2 exp2: code2; break;   // 代码块后面的分号不要忘
    caseN expN: codeN; break;   
    [default: codeX; break;]
}

switch后面的表达式语句只能是整型或字符型
在case后,允许有多个语句,可以不用{}括起来
case和default子句的顺序可以变动,结果不变
21.goto语句:执行后,程序将跳转到定义的标识符(一般用英文大写)处并执行其后的语句
22.函数的定义:

/*其中[]内为可选内容*/
[数据类型说明] 函数名([参数]){    // 数据类型默认是int
    执行代码块;
    return (表达式);
}

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

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

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

23.函数返回值为三目运算符的写法:return 判断?表达式1:表达式2;
24.变量存储类别:按生存周期可分为静态存储方式和动态存储方式;按存储类别可分:自动auto(可省略)、静态static(分局部和外部)、来自寄存器register、来自外部extern
- 静态局部变量属于静态存储类别,只赋初值一次(如无赋值则默认为0或空字符)
- 只有局部自动变量和形式参数可以作为寄存器变量,不能定义任意多个寄存器变量(有限)
- 外部变量的意义是某函数可以调用在该函数之后定义的变量
25.内部函数:不能被其他源文件调用的函数(也称静态函数),用static定义
外部函数(系统默认):能被其他源文件调用的函数,用extern定义
26.数组:一块连续的、大小固定、数据类型一致的内存空间(数组是相同类型变量集合);
三种初始化:
- 数据类型 数组名称[数组长度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)
28.多维数组:数组名后跟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] = 值;(需要同时指定行和列的维数)
29.求二维数组的对角线之和:

#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;    
}

30.结构体:是用户自定义的可用数据类型,可存储不同类型变量集合(与数组相反),有几种定义方法:

// 这里是定义了一个结构体类型
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;  // 指针两侧变量不能省略(因成员运算符.的优先级高于*)

31.当指针p的值为对象x的地址时,一般说p指向x*p可理解x的别名
32.scanf函数:可以从键盘读取输入的信息并存给变量(&变量名,即地址)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计超逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球行业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值