初识C语言

C语言概念

C语言是一门计算机语言,计算机语言又是人和计算机进行交流的语言
包括C/C++/Java/python等。

main函数

main函数:又称为主函数,是程序的入口,有且只有一个。

内置类型

内置类型及32位平台下所占内存大小

char sizeof(char)=1
short sizeof(char)=2
int sizeof(char)=4
long sizeof(char)=4
long long sizeof(char)=8
float sizeof(char)=4
double sizeof(char)=8

变量

变量全局变量局部变量
定义定义在代码块之外定义在代码块之内
作用域整个工程变量所在的局部范围
生命周期整个程序的生命周期进入作用域生命周期开始,出作用域生命周期结束

生命周期:变量从创建到销毁的一段时间

注意1:放在main函数内部的变量是局部变量,但局部变量不全都是放在main函数内部的,只要定义在代码块之内,都是局部变量

注意2:局部变量和全局变量尽量不要用相同的名字,容易产生误会或产生bug,当产生冲突的时候,以局部变量优先

常量

1、字面常量:可以直接写出值的常量,比如3.14

2、const修饰的常变量:const(常属性),const int a=8;使得a成为了具备常属性的变量,本质是变量,因此a是常变量

3、#define定义的标识符常量:# define MAX 10

4、枚举常量:一一列举的常量,枚举关键字是enum

enum  Sex
{
       M,
       F,
       S
};

枚举常量的值不能更改

int  main()
{
   enum  Sex   s=M;  
   s=F;                            //正确的
   F=4;                         //错误的
}

字符串

由双引号引起的一串字符,字符串可以存放到字符数组中

char  arr1[]=“abc”;
char  arr2[]={'a','b','c'};
printf("%s\n",arr1);               
//输出abc
printf("%s\n",arr2);               
//输出abc+乱码,因为没有结束标志

char  arr2[]={'a','b','c',0};              
char  arr1[]=“abc”;                     //两者输出结果均为abc

字符串“abc” 中包含’a’ ‘b’ ‘c’ ‘\0’四个字符,’\0’是字符串的结束标志,但不属于字符串的内容

char  arr1[]=“abc”;
char  arr2[]={'a','b','c'};
printf("%d\n",strlen(arr1));               
//输出 3 ,遇到 \0 立即停止
printf("%d\n",strlen(arr2));              
//输出 随机值,看什么时候遇到 \0 

转义字符

转变原来意思的字符,有很多,常用的是\n

选择语句

if  else

循环语句

while(条件为真)
{
         循环条件;
}
条件为假,即跳出循环

函数

函数分为库函数和自定义函数

数组

一组相同元素的集合
定义一个存放多少个什么类型字符或数字的数组,数组下标从0开始,以下标方式访问元素

操作符

算数运算符、移位操作符、位操作符、赋值操作符、单目操作符(双目操作符、三目操作符)、关系操作符(比较)、逻辑操作符、条件操作符(表达式1 ? 表达式2 : 表达式3)、逗号表达式(表达式1 , 表达式2 …)、[]下标引用操作符等

sizeof

sizeof是一个操作符,不是函数,因为函数后面的( )不可省略,而sizeof后面的( )是可以省略的。

sizeof()计算的是变量/类型所占空间的大小,单位是字节
sizeof(变量)时,括号可省略;
sizeof(类型)时,括号不可省略;
sizeof(arr)时,计算数组大小,单位是字节,如果是int arr[6],则sizeof=4*6=24字节,int型一个元素是4字节
数组元素个数=sizeof(数组)/sizeof(arr[0])
arr[0]:数组每个元素的大小,每个元素大小均相同,可选第一个元素

++

后置++ 先使用,再++
前置++ 先++ 再使用
前置-- 先使用,再–
后置-- 先-- 再使用

原码、反码、补码

~a 表示按位取反(二进制)
如果int a=0; ~b=-1
原因如下:
a 00000000 00000000 00000000 00000000 按位取反后得到
~b 11111111 11111111 11111111 11111111 负数在内存中存储的时候,存储的是二进制的补码
负数:
原码 ->按位求反 -> 反码 -> 末尾+1 -> 补码
补码 -> 末尾-1 -> 反码 -?按位求反 -> 原码
~b-1 11111111 11111111 11111111 11111110
按位求反 10000000 00000000 00000000 00000001
所以为-1 第一位为符号位

static关键字

static int a=1;
static修饰局部变量,使得局部变量的生命周期变长
static修饰全局变量,改变了变量的作用域,让静态的全局变量只能在自己所在的源文件内部使用,出了源文件就没法再使用了
static修饰函数,改变了函数的链接属性,外部链接属性->内部链接属性,函数具有外部链接属性时,在使用之前进行函数声明即可

宏的定义 #define MAX(X,Y) (X>Y?X:Y)
宏在main函数中的使用方式:max=MAX(a,b);

指针

int a=10;
printf("%p\n",&a);    
//&a是取地址操作,打印整型变量a的地址

int a=10;
int* p=&a;        
// 指针变量p的类型是int *     int表示p指向的a是int类型
printf("%p\n",p);    
*p=20;              
//*为解引用操作符(或者叫间接访问操作符)

结构体

针对复杂对象

struct Book
{
    char  name[20];    //C语言
     short price;          //55
};
int main()
{
      //利用结构体类型 - 创建一个该类型的结构体变量
       struct Book b1={"C语言",55};
       struct  Book*  pb=&b1;         //利用pb打印出书名和价格
       printf("书名:%s\n",b1.name);
       printf("价格:%d\n",b1.price);
       return 0;
}

结构体变量.成员
结构体指针->成员

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值