前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言学习

C语言学习

原创
作者头像
暮云
发布2022-10-08 09:29:35
1.6K1
发布2022-10-08 09:29:35
举报
文章被收录于专栏:C/C++语言学习

数据类型

  • 向内存申请空间
代码语言:c++
复制
#include <stdio.h>
int main()
{
    char ch = 'A';//'ch'为变量
    printf("%c",ch);//%c——打印字符格式的数据
    return 0;    
}
代码语言:c++
复制
#include <stdio.h>
int main()
{
    int age = 17;//'age'为变量
    printf("%d",ch);//%d——打印整型十进制的数据
    return 0;    
}

变量

  • 局部变量
  • 全局变量
  • 定义:使用“=”为其赋值
代码语言:c++
复制
#include <stdio. h>
int num2 = 20;//全局变量定义在代码块{}之外
int main ()
{
    int num1 = 10;//局部变量定义在代码块{}之内
    return 0;
}
  • 当局部变量和全局变量的名称相同时,局部变量优先
代码语言:c++
复制
int a=100
int main()
{
    int a=10//该变量优先
    return 0;
}
  • 局部变量有局限
代码语言:c++
复制
int main()
{
    {
        int a = 10;
    }
    printf("%d",a);//此时'a'无法打印
    return 0;
}

两数求和

代码语言:c++
复制
#define _CRT_SECURE_NO_WARNINGS
//在VS上需要加这一句才可使用'scanf'等函数
#include <stdio.h>
int main()
{
    int num1=0;
    int num2=0;
    int sum=0;
    //C语言规定,变量要定义在当前代码块最前面
    //'scanf'是输入函数
    scanf("%d%d",&num1,&num2);//'&'为取地址符号
    //'&num1'相当于一个地址
    sum=num1+num2;
    printf("sum=%d",sum);
    return 0;
}

变量的作用域和生命周期

作用域
  • 局部变量的作用域是变量所在的局部范围
代码语言:c++
复制
#include<stdio.h>
int main()
{
    int num = 0;
    printf("%d",num);
    return 0;
}
//"{}"花括号内即为局部变量的作用域
  • 全局变量任何地方都可以用
代码语言:c++
复制
#include<stdio.h>
int fabulous=0;
int main()
void text()
{
    printf("test()--%d\n",fabulous);
}
int main()
{
    test();
    printf("%d",fabulous);
    return 0;
}

还可跨源文件


生命周期

常量

  • 字面常量
  • const 修饰的常变量
代码语言:c++
复制
#include <stdio.h>
int main()
{
    //"0,1,11"等为字面常量
    const int num = 0;
    // "const"修饰"num"变量,该变量变为常变量
    print("%d",num);
    return 0;
}
  • #define 定义的标识符常量
代码语言:c++
复制
#include <stdio.h>
#define MAX 10
int main()
{
    int arr[MAX] = {0};
    printf("%d",MAX);
    return 0;
}
  • 枚举常量
代码语言:c++
复制
//一一列举---枚举常量
enum Color
{
  RED,// 0
  YELLOW,// 1
  BLUE  // 2
};
//RED,YELLOW,BLUE---枚举常量,不可改变
int main()
{
    enum Color color = BLUE;
    printf("%d",color);//为2
    return 0;
}

字符串

  • 由双引号引起来的一串字符
  • 字符串的结束标志是 "\0" 的转义字符
代码语言:c++
复制
#include<iostream>
#include <stdio.h>
int main()
{
    char arr1[]="abc";//数组
    //"abc"---'a''b''c''\0'---'\0'字符串结束标志
    char arr2[]={'a','b','c',0};//'0'-'\0'
    printf("%s",arr1);
    printf("%s",arr2);
    printf("%d",strlen(arr1));
    //strlen-计算字符串长度
    return 0;
}
  • 转义字符: 即使用 \ 将字符转义

注释

代码语言:c++
复制
//  注释内容

函数

  • 自定义函数
  • 库函数
代码语言:c++
复制
#include <stdio.h>
//求和函数
int add(int a,int b)
{
    int z = a + b;
    return z;
}
// add 为自定义函数
int main()
{
    int x = 100;
    int y = 200;
    int sum = 0;
    sum = add(x,y);
    printf("%d",sum);
    return 0;
}
//printf 等为库函数

数组

  • 定义:一组相同类型元素的集合
  • 规定所有元素都有下标从0开始到n-1
代码语言:c++
复制
//例
int arr[10]={1,2,3,4,5,6,7,8,9,10};
//定义一个整型数组最多放10个元素
float arr[10]//浮点数类型数组
char ch[4]//字符类型数组    
代码语言:c++
复制
#include <stdio.h>
int main()
{
    int arr[10]={1,2,3,4,5,6,7,8,9,10};
    int i = 0;
    //将数组内容打印
    while(i<10)
    {
        printf("%d",arr[i]);
        i++;//在使用i之后,i值再加1
    }
    return 0;
}

操作符

  • 算术操作符
代码语言:c++
复制
+ - * / %  //加 减 乘 除 模
  • 移位操作符
代码语言:c++
复制
>>  //向右移一个(二进制)位
<<  //向左移一个(二进制)位
  • 位操作符
代码语言:c++
复制
& //按位与  (集合中的且)
| //按位或  (集合中的或)
^ //按位异或   
  //对应的二进制位相同,为1
  //对应的二进制位相异,为0  
  • 复合赋值符
代码语言:c++
复制
+= -= /= &=
// a = a + 1  =  a += 1
  • 单目操作符
  • sizeof()
代码语言:C++
复制
printf("%d",sizeof());
// sizeof 类型用来计算(  )大小,单位是字节
  • ~
代码语言:c++
复制
//~
int main()
{
    int a = 0;
    int b = ~a;
    //~--按二进制位取反
    //例000
    //对应111
    printf("%d",b);//-1
    return 0;
}
  • --与++
代码语言:c++
复制
//--与++
int main()
{
    int a = 10;
    int b = a++;
    //后置++,先把a赋值给b使用,再++
    printf("a=%d b=%d",a,b);//a=11,b=10
    return 0;
}
{
    int a = 10;
    int b = ++a;
    //前置++,先++,再把a赋值给b使用
    printf("a=%d b=%d",a,b);//a=11,b=11
    return 0;
}
  • (类型)
代码语言:c++
复制
int main()
{
    int a = (int)3.14;
    //(类型)该操作符将3.14强制转换为int类型
    return 0;
}
  • 关系操作符
  • 逻辑操作符
代码语言:c++
复制
//&&
int main()
{
    //0表示假,非0为真
    int a = 3;
    int b = 5;
    int c = a && b;//&&可理解为数学中的并且
    printf("c=%\n",c);//c=1
    return 0;
}
//||
int main()
{
    //0表示假,非0为真
    int a = 0;
    int b = 5;
    int c = a || b;//||可理解数学中的或
    printf("c=%d\n",c);//c=1
    return 0;
}
  • 条件操作符(三目操作符)
代码语言:c++
复制
<表达式1>?<表达式2>:<表达式3>
    //若表达式1为真,则执行表达式2,否则执行表达式3
  • 逗号表达式
  • 下标引用,函数调用和结构成员

关键字

  • typedef 类型重定义
代码语言:c++
复制
int mian()
{
    typedef unsigned int u_int;
    // typedef 将unsigned int 重新定义为 u_int
    unsigned int num = 1;
    u_int num2 = 1.1;
    return 0;
}
  • static: 用来修饰变量和函数
代码语言:c++
复制
// static 修饰局部变量
//局部变量生命周期变长
#include <stdio.h>
void text()
{
    static int a = 1;//a 局部变量是自生 自灭的
    //static 将a变为一个静态局部变量,即a不被销毁
    //a将持续存在
    a++;
    printf("a=%d\n",a);//2 3 4 5 6
}
int main ()
{
    int i = 0;
    while (i<5)
    {
        text();
        i++;
    }
    return 0;
}

代码语言:c++
复制
//源文件1
//static修饰全局变量
static int g_val = 2021;//定义一个全局变量
//static 改变了变量的作用域,使静态的全局变量只能在自己所在的源文件内部使用,出了源文件将不可再用
代码语言:c++
复制
//源文件2
//static 修饰全局变量
#invlode <stdio.h>
int mian()
{
    //extern - 声明外部(在其它源文件中)符号用的
    extern int g_val;
    printf("g_val=%d",g_val);//程序无法运行
    return 0;
}

代码语言:c++
复制
//static 修饰函数与修饰全局变量类似
//其改变来了函数的连接属性(外部变为内部)

#define定义常量和宏

代码语言:c++
复制
//#define 定义的标识符常量
#define MAX 100
//#define 定义宏-带参数
//比定义函数更简洁,只需一行
#define MAX(X,Y)(X>Y?X:Y)
int main()
{
    int a = 10;
    int b = 20;
    int max = MAX(a,b);
    printf("max=%d\n",max);
    return = 10;
}

指针

  • 即地址 P168
代码语言:c++
复制
int main()
{
    int a = 10;
    int* p = &a;//类型加 * 符号
    //p 是指针变量,用来存放地址
    printf("%p\n",&a);
    printf("%p",p);//两者打印结果相同
    *p = 5;//* -解引用操作符
    //通过p中存放的地址,找到该地址a将其中内容改为5
    return 0;
}
  • 指针大小为4个字节(32位)或8个字节(64位)

结构体

代码语言:c++
复制
#include<stdio.h>
//创建一个结构体类型
struct Book//struct 结构体关键字
{
  char name[20];
  short price;
};
int main()
{
    struct Book b1 = {"C语言程序设计",55};
    printf("书名:%s\n",b1.name);
    //.   操作符- 结构体变量.成员
    printf("价格:%d 元",b1.price);
    return 0;
}
代码语言:c++
复制
int main()
{
    struct Book b1 = {"C语言程序设计",55};
    //用指针变量表示
    struct Book* pb=&b1;
    //->  操作符-结构体指针->成员
    printf("书名:%s\n",pb->name);
    printf("价格:%d 元",pb->price);
    return 0;
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据类型
  • 变量
    • 变量的作用域和生命周期
      • 作用域
      • 生命周期
  • 常量
  • 字符串
  • 注释
  • 函数
  • 数组
  • 操作符
  • 关键字
  • #define定义常量和宏
  • 指针
  • 结构体
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档