首页 > 其他分享 >初识C 语言

初识C 语言

时间:2022-11-07 14:03:48浏览次数:44  
标签:字符 常量 int 运算符 初识 指针 变量 语言

 程序语言

 C语言是目前极为流行的一种计算机程序设计语言,它既具有高级语言的功能,又具有汇编语言的一些特性。支持ANSIC。

 C语言的特点:通用性及易写易读 是一种结构化程序实际语言   具有良好的可移植性  语言功能丰富 

 

 语言程序的结构

 用C语言编写的源程序,简称C程序。C 程序是一种函数结构,一般由一个或若干个函数组成,其中必有一个名为main()的函数,成为主函数。

   #include< stdio.h>       //包含一个叫stdio.h的文件

   int main()           //int是整型的意思  main前面的int表示函数调用返回一个整型值

   {

       printf("Hello,world\n");

       return 0;     //返回(整数)0

   }

 //#include是编译预处理命令,放在源程序的最前面,编译预处理命令后面不加分号

 //printf()是系统提供的函数叫做库函数    使用时需要打招呼

 //C程序没有行号,每条语句必须用一个分号结尾 

 

 C语言程序:计算机只能识别和执行由0和1组成的二进制的指令,而不能识别和执行用高级语言写的程序。为了实际算你能执行高级语言所写的程序,必须先用一种称为“编译程序”的软件,把源程序编译成二进制形式的“目标程序”,然后将该目标程序与程序的函数库和其他目标程序连接起来,形成可执行的程序才能被机器所执行。相对于目标程序,用高级语言编写的程序被称为“源程序”。

编译程序是把C语言源程序编译,连接生成可执行程序(.exe文件) 

 

 变量

 变量是指在程序执行过程中,其值可以改变的量。一个变量用一个标识符(变量)表示,在内存中占据一定的存储单元,用于存放变量的值。变量必须向定义后使用,变量的值可以通过赋值的方法获取  和改变。

 char 1个字节  //字符数据类型   %C--打印字符格式的数据

 short 2个字节 //短整型  short int

 int 4个字节  //整型  %d--打印整型十进制数据

 long 4/8个字节  //长整型    C语言标准规定  Sizeofl(long)>=Sizeof(int)

 long long 8个字节  //更长整型  (c99)

 float 4个字节 //单精度浮点数  %f--打印浮点数字-打小数

 double 8个字节 //双精度浮点数

 

 定义变量的方法:

   int age=150;

   float weight=45.5f;

   char ch='w‘;         //ch-向内存申请一块空间名称

 全局变量和局部变量

   int num2=20;//全局变量-定义在代码块({})之外的变量

   int main()

   {

       int num1=10;//局部变量-定义在代码块({})内部的变量

       return 0;

   }

 //局部变量和全局变量的名字建议不要相同-容易产生误会,产生bug

 //当全局变量和局部变量名字相同时,局部变量优先

  

   #include<stdio.h>

   int main()

   {

      //计算2个数的和

      int num1=0;

      int num2=0;

      int sum=0;  //C语言法规定,变量要定义在当前代码块的最前面

      scanf(“%d%d,&num1,&num2”);//输入数据-使用输入函数scanf

      //取地址符号&

      sum=num1+num2;

      printf(“sum=%d\n”,sum);

      return 0;

   }

 C语言的字符常量是用单引号括起来的一个字符,如'a' 就是字符常量。注意,'a’和'A'是两个不同的字符。   

 字节:计算机中单位

  bit-比特位

  byte-字节

  kb  mb  gb  tb  pb

 

 进制之间的转换

 一个字节=8个比特位的大小

 二进制由0、1两个数字组成,逢二进一

 八进制数由0~7八个数字组成

 十六进制数由0~9十个数和A~F(或a~f)六个字母组成,逢十六进一

 十进制转二进制:除2取余

 十进制转八进制:除8取余

 十进制转十六进制:除16取余

 二 进制转十进制:从二进制最低位开始向高位依次将每一个标识位第0位开始......,以这个位数作为2的幂次方与对应位上的数(0或1)相乘之后累加的和就是其对应的十进制数

 八进制数或十六进制数转换为十进制数是将2的幂次方换成8的幂次方或者16的幂次方

 八进制转二进制:将每一位八进制转换成一个3位的二进制就可以得到

 十六进制数转二进制数:将每一位十六进制数转换为为一个4位的二进制数就可以得到   

 

  常见的转义字符

  \n  换行符,将光标从当前位置移到下一行的开头

 \t  将光标移到下一位置的水平制表符

 \b 退格符,将光标退回到前一列的位置

 \r  回车符,将光标从当前位置移到本行的开头

 \f 换页,将光标从当前位置移到下一页的开头

 \\ 反斜杠字符(\)

 \'  单引号字符(')

 \" 双单引号字符(”)

 \ddd  1~3位八进制数代表一个字符  0~7

 \xhh 1~2位十六进制数代表一个字符

  \v 垂直制表符

 \? 在书写连续多个问号时使用,防止他们被解析成三个字母语 ??+)

 \a 警告字符,蜂鸣

 

 注释

 1.代码中又不需要的代码可以直接删除,也可以注释掉

 2.代码中有些代码比较难懂可以加一下注释文字

  /* 分格 C语言的分格

  */ 不能嵌套注释

  //C++ 可以注释一行也可以注释多行

  Ctrl+K+C  注释

  Ctrl+K+U  取消注释 

 常量

 常量是在程序的执行过程中其值不变的量。在C语言中,常量不需要类型说明就可以直接使用,常量的类型是由常量本身隐含决定的。在C语言中,从其表现形式上将普通常量和符号常量。普通常量就是用数字或字母直接表示的常量,符号常量是用一个标识符来代表的常量。

 1.普通常量有3类:数值常量,字符型常量和字符串常量

  200:整型数值常量(十进制数)也叫字面常量

  0350:整型数值常量(八进制数,以0开头)

  Ox12,OXFFAA:(整型数值常量,以OX或Ox开头)

  0.2:实数数值常量

  ‘a’:字符型常量

  ”Hello“:字符串常量

  字符串  ”hello bit.\n“这种由双引号引起来的一串字符串称为字符串字面值,或者简称字符串。

  注:字符串的结束标志是一个\o的转义字符 。在计算字符串长度的时候\o是结束标志,不算作字符内容。%s打印字符串

 2.字符常量

 在C语言程序中,可对常量进行名,即用符号代替常量,叫做符号常量,一般用大写字母表示,符号常量一经定义就可以代替常量使用。

 符号常量可以用宏定义#define命令来实现: #define   PI  3.1415926    /*定义圆周率*/

 //#define 定义的标识符常量

 定义了符号常量PI代表圆周率3.1415926,则在程序中需要使用数据3.1415926时,都可以用PI来代替。

 //数据在计算机上存储的时候,存储的是2进制

 //ASCII编码

 //  A-65  a-97 ASCII码值

 3.枚举常量 enum

 //枚举-一一列举

 //性别:男,女,保密

 //枚举关键字-enum

 关键字

auto break:停止循环 case char

const:常变量

continue:继续循环 default:默认 do:循环
double else enum extern:引入外部符号 float for goto if
int long register:寄存器 return:返回 short signed sizeof static:静态
struct:结构体关键字 switch typedef:类型定义 union:联合体/共用体 unsigned void:无 空 volatile while

  // int 定义的变量是有符号的   signed int 等价于unsigned int num 无正负之分

  //unsigned无符号数

 

 数据的格式化输出和输入

 1.数据的格式化输出

 格式化输出函数printf()的功能是按指定的格式向终端(或系统默认的输出设备)输出若干个任意类型的数据。

 printf()函数的一般形式为:printf(格式控制,[输出列表]);

 其中,”格式控制“是用双引号括起来的字符串,也称”转换控制字符串“。它是由字符”%“、格式字符(如d、f、c等)和普通字符(原样输出的)组成。”输出列表“是一些与”格式控制“中的格式字符--对应的需要输出的变量或表达式。

 int b=~a;  //b是有符号的整形

 //原码、反码、补码

 //负数在内存中存储的时候,存储的是二进制的补码

 printf(”%d\n“,b);

 //使用的打印的是这个数的原码

 //原码->反码 符号不变其他位按位取反

 //反码->补码  反码加1得到补码

 //补码->反码 补码减1     11111->11110

 //反码->原码  符号不变其它按位取反     11110->10001  开头是1表示负数   开头是0的表示正数

 //(在内存中)任何数字存的都是补码

 //反码只是计算机的一个中间状态   

 //原码->反码->补码   只要是整数,内存中存储的都是二进制数

 2.数据的格式输入

 格式化输入函数scanf()的功能是用来从外部输入设备(通常是键盘),像程序中的变量输入一个或若干个任意类型的数据。

 scanf()函数的一般形式为: scanf(格式控制,地址列表);

 使用scanf()函数时要输入的变量名前要加取地址符号&

 其中,”格式控制“的含义同printf()函数;”地址列表“是由若干个地址组成的列表,可以是变量的地址或字符串的首地址。

 3.单个字符的输出和输入

 函数putchar()和getchar()专门用来输出和输入字符型数据,使用时要包含头文件stdio。h。

 输出单个字符函数putchar()

 putchar()函数的功能是用于将单个字符输出到显示器上,其一般形式为:putchar(ch);

 输入单个字符函数getchar()

 getchar()函数的功能是从标准输入设备(键盘)读入一个字符。其一般形式为:ch=getchar()

 其中,ch为一个字符型变量,把从键盘接收到的字符放到变量ch中。

 

 运算符与表达式

 单目操作符

 ! 逻辑反操作 假变真 真变假

 - 负值

 + 正值

 & 取地址

 sizeof 操作数的类型长度(以字节为单位)2进制

 ~ 对一个数的二进制按位取反

 -- 前置、后置--   //x-- 后置--,先使用,再--         --x后置--,先--,再使用

 ++ 前置、后置++   // x++后置++,先使用,再++           ++x前置++,先++,再使用     

 *间接访问操作符(解引用操作符)

 (类型)强制类型转换

 赋值操作符:复合赋值符

 +=  -=  *=  /=  &=  ^=  |=  >>=  <<=

 关系运算符   !=不相等   ==相等

 逻辑运算符  &&逻辑与  ||逻辑或 (有一个为真则为真)

 赋值运算符 =

 求字节数运算符:sizeof()//计算的是变量/类型所占空间的大小,计算数组大小,单位是字节 printf(”%d\n“,四则偶分(arr)),

 移位操作符:<<左移  >>右移

 位运算符:| 或     ^异或    &与(按位)

 下标运算符:[  ]   //int  arr [10]={0}

 (三目操作符)条件操作符:exp1?exp2:exp3;

 //     int mian ()

    { 

         int a =10;

         int b =20;

         int max=0;

         max=(a>b?a:b);

         if(a>b)

         max=a;

    else

         max=b;

         return=0;

    }

 函数调用操作符()

    int   Add(intx,inty)

    {

        int  z=0;

         z=x+y:

         return z;

    }

    int  main()

   {

       int a=10;

       int  b=20;

       int  sum =Add (a,b);

       return 0;

    }

 逗号运算符和逗号表达式

  逗号运算符”,“作为C语言的一种特殊的运算符,也称为顺序求值运算符,它的作用是把多个表达式连接起来。用逗号运算符连接起来的式子称为逗号表达式 ,其一般形式为:表达式1,表达式2,....,   表达式n

 表达式的求解过程:按照从左大有右的顺序逐个求解表达式1,表达式2,...,表达式n的值,而整个逗号表达式的值是最后一个表达式(表达式n)的值

 

 宏定义

 宏定义#define命令是C语言的一种预编程序命令,用来定义程序中使用的符号常量,一般写在源文件的开始部分,有带参数和不带参数两种使用形式

 不带参数的宏定义。不带参数的宏定义是指用一个指定的标识符(宏名)来代表一个常量(宏体),其一般格式为:#define 标识符 字符串     其含义是将程序中该语句以后出现<字符串>来替代。

 带参数的宏定义。不带参数的宏替换是一种简单的字符串常量替换,为了使宏替换更具灵活性,C语言中提供了带参数的宏定义,

 其一般形式为:#define  宏名(参数表) 宏体

 

  if-else语句

 if-else语句是标准的if语句,用来实现双分支选择结构,其一般形式为:

   if(条件)

    {

        语句体1

    }

     else         //esle和它离的最近的if匹配

    {

        语句体2

    }

 

 指针变量的指针变量

 1.指针变量的定义及初始化

 一个变量在内存中的地址称为该变量的指针,变量的地址在程序执行过程中是不会发生变化的, 所以一个变量的指针是常量专门用来存放地址的变量称为指针变量,与简单变量一样,指针变量也是先定义后使用。一般而言,指针变量的定义形式为:类型标识符*指针变量名

 同样,也可以在定义时为指针变量赋初值,即初始化。一般地,指针变量的定义及初始化形式为:类型标识符*指针变量名=&变量名

 指针变量初始化后,该指针就指向了具体的变量,对变量的访问就可以通过指针变量完成。

 2.指针运算

 当一个指针指向一个变量时,程序就可以利用这个指针间接引用这个变量,间接引用的格式为: *指针变量

 其中,*是间接引用运算符,为单目运算符,优先级与++、--相同,他可以访问指针变量所指向的变量的值。

 3.指针变量作为函数的参数

 指针变量作为函数的实参时,将变量的地址传递到行参中,是一种地址传递方式。在函数体中改变行参时,不能够改变实参指针变量的值,但是可以改变该指针变量所指变量的值

 

   // int main

   {

     int a=10;//申请了4个字节的空间

     //printf(“%p\n”,&a);

     int*p=&a // int告诉我们p是一个什么样的指针变量  *告诉我们p是一个指针变量   p是一个变量-指针变量

     //printf(“%p/n”,p);

    *p=20  //*-解引用操作符/间接访问操作符    *p 通过*p找到a

     printf(“a=%d\n”,a);

     return 0;

   }

 

  指针结构体的指针变量

   一个结构体类型变量在内存中占有一段连续存储单元,这段内存单元的首地址就是该结构体变量的指针。可以用一个指针变量指向一个结构体变量,或指向结构数组中的元素。这样的指针变量称为指向 结构体的的指针变量。

 1.指向结构体的指针变量

 指向结构体的指针变量的定义,与普通指针变量的的定义完全一样,其一般形式:struct  结构类型名  *指针变量名

 结构体变量的首地址就是该结构体变量的指针。用地址运算符&就可获得结构体变量的指针。将一个指针变量指向结构体变量的一般形式为:指针变量名=&结构体变量名

 就使指针变量指向了结构体变量,从而对结构体成员的访问就可通过指针变量来实现。

 2.结构体变量成员的访问形式

    结构体变量名.成员名

 (*结构体指针变量名).成员名

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

 3.指向结构体数组的指针变量

 类似于用指向结构体变量的指针,间接访问结构体成员一样,也可以用指向结构体数组及其元素的指针来处理结构体数组。

  //char name[ 20];  name是个数组不能直接改

  //  struct  Book  b1={“C语言程序设计”,55};

  //  strcpy(b1.name,“C++”);       strcpy-string copy-字符号拷贝-库函数-string.h

  //printf("%s/n",b1.name);

 4.指向结构体的指针变量作为函数参数

  类似于普通指针变量作为函数参数一样,用指向结构体的指针变量作实参时,属于“地址传递”方式

 

标签:字符,常量,int,运算符,初识,指针,变量,语言
From: https://www.cnblogs.com/cherry0420/p/16831682.html

相关文章