c语言基础笔记大全(3)

目录

1.c语言三大基本控制结构

选择语句

if语句

switch语句

选择结构的基本运算

2.基本控制语句

循环语句

无限循环实现的三种方式

while, do...while...  ,for循环

嵌套循环

3.指针

声明指针变量

指针初始化和赋值

指针变量使用

地址变量和空指针

指针的运算


                          c语言三大基本控制结构

   一 ,选择语句

       1.C语言程序有顺序、选择(分支)、循环(迭代)3种基本控制结构,实现程序代码顺序执行、判断选择执行、循环执行控制。程序代码默认是顺序执行。

      2.  goto语句也可以认为是一种控制结构,在函数内任意跳转。最常用的就是顺序结构,因为C语言程序默认就是顺序执行,因此无需特殊语法控制。


      3.选择语句要求程序测试条件,当条件为真时,选择执行部分语句,当条件为假时,选择执行另一部分代码。

      4.C语言把条件中的表达式值非0值判断为真,0或NULL判断为假。

     5.选择结构中的关系运算 :c语言提供六种关系运算符;

C语言选择语句包括:

•条件运算符 ?:
•if,if...else 以及if嵌套语句
•switch语句以及其嵌套语句

                                            条件运算符 ?
语句语法形式:
条件表达式1 ?: 表达式2 : 表达式3;

当条件表达式1为真时,执行表达式2,否则执行表达式3。
例如:判断两个数的大小,输出大的数



#include <stdio.h>

int main(void) 
{
    int a=1,b=2,c=3;
    
    (b >= a) ? printf("%d\n",b) : printf("%d\n",a);
    (b >= c) ? printf("%d\n",b) : printf("%d\n",c);
    
    return 0;
} 

       二,if语句

      1.if语句的三种形式:

——if语句        分支结构

——if...else语句      双分支结构

——if...else if...else语句      多分支结构

       2.if语句有简单的if语句(无else),if...else语句,以及嵌套if语句形式。

简单if语句:

    if(表达式) 语句1;
    
    if(表达式) {
    
        语句1;
        语句2;
        ...
    }
    

注:多条语句需要执行,需要使用{}

if...else语句:

    if (表达式) 语句1; else 语句2;
    
    if (表达式) { 
        
        语句1;
        语句2;
        ... 
        
    } else {
    
        语句3;

        语句4;

         ...

}


例:判断分数是在哪个水平的区间,天才,优秀,良好,正常,及格,不及格。


#include <stdio.h>

int main(void) 
{
    int score=95;
    
    if (score >= 60)
    {
         printf("及格!\n");
         
         // 进一步判断处于什么水平
         if(score == 100)
            printf("天才!\n"); 
         else if(score >= 90)
         {
            printf("优秀!\n");
         }else if(score >=80 )
         {
            printf("良好!\n");
         }else 
            printf("正常!\n");
           
    }else 
    {
        printf("不及格!\n");
    }
    return 0;
}

                        三  ,switch语句
switch(整型表达式) {
    case 整型常量表达式1:
        语句1;
        ...
        break; // 可选,跳出switch
    case 整型常量表达式2:
        语句2;
        ...
        break; // 可选,跳出switch
    
    ...//
    default :  // 默认执行语句,可选,当没有任何case符合时执行
        语句 3;
}

     *在使用switch语句时应注意以下几点:

1. 表达式的值为整数、字符、枚举类型。
2.常量表达式的值必须互不相同,否则会出现分支矛盾的现象。
3.case后面的常量表达式只起标号作用,而不起条件判断作用,即“只是开始执行处的入口标号"。一般情况下需用break语句跳出switch语句。
4. 语句块可以是一条语句,或复合语句,可以不用花括号{}。 
5.各个 case 和 default 出现的先后次序,并不影响执行结果,习惯上将default子句放在switch的末尾。
6.多个case标号可共用一组执行语句。
switch(表达式)
case 常量表达式1: case 常量表达式2:
case 常量表达式3:语句1;break case 常量表达式4: 语句2; break

注:break;跳出switch不再执行后面语句,没有break会继续执行后面case语句

四,基本控制语句

              五,  循环语句

       1.语句是顺序执行,每条语句只执行一次,循环语句实现多次执行同一段代码,用来完成多次相同的操作。

       2.循环语句有以下几类:

•while(表达式){循环体}:表达式非0为真,执行循环体
•for循环
•do...while循环
•嵌套循环:三种循环方式可以任意嵌套
•无限循环

               六, 无限循环实现的三种方式

for(;;){
      
  }  
  
  while(1){
      
  }
  
  do{
      
  }while(1);
//可以设置条件,使用break结束无限循环

例 :实现读取输入的字符

#include <stdio.h>

int main(void)
{
    char c;
    for (;;)
    {
        scanf("%c", &c);
        printf("%c\n", c);
    }
    return 0;
}

      七,while, do...while...  ,for循环

   1.三种循环方式等价,这里以一个程序用三种方式写实现相同功能。

例:while 实现1-100所有整数之和。

#include <stdio.h>
int main(void)
{
    int sum = 0, i = 1;

    while (i <= 100)
    {
        sum += i;
        i++;
    }
    printf("%d\n", sum);
    return 0;
}

       八,嵌套循环

    一,多重for循环:

for(...) {

    for(...) {
        ......
    }
}
   二,while,for循环嵌套:

while(...) {
    ...
    for(...) {

        while(...) {
            
        }
    }
    
    do {
        
    }while(...);
 }

   九,指针

      1.C语言指针是一种派生类型,指针变量的值是计算机内存的地址,C语言语法规定使用 & 获取变量的内存地址,用 * 获取指针变量所指向内存里面的值。

注:C语言中,任何类型包括函数类型(函数指针)、指针类型本身(指针的指针,多重指针),都可以派生指针类型。

        2.计算机内存可以看做许多字节单元组成的,按照字节编址,每个字节都有固定的地址,例如32位机器内存地址空间是2的32次方,也就是4GB大小,地址范围0x0000000-0xffffff。简单理解是每个字节单元是房间,每个地址是房间号,房间号从0开始编号,房间里面存放变量的真正的值。

         3.变量分配地址一般从低地址编号到高地址编号,内存地址一般习惯使用十六进制表示,方便与二进制转换。

       十,声明指针变量

指针变量和整型变量、浮点变量一样,需要声明和初始化使用。声明语法:

    // 声明指向char型的指针变量cp
    char    *cp;

    // 声明指向int型的指针变量ip     
    int     *ip;

    // 声明指向float型的指针变量fp     
    float   *fp;

注:不同数据类型的指针变量的值都是地址常量,只不过其指针地址所指向的变量数据类型是不同的。

        十一,指针初始化和赋值

和普通变量一样,指针变量同样可以初始化和赋值。

例如:声明和初始化基本数据类型的指针变量。

    char c='a';

    // 获取变量c的值赋值初始化字符指针cp
    char *cp = &c;  
    
    int i= 1000;

    // 获取变量i的值赋值初始字符指针ip
    int *ip = &i;   
    float f = 1.01f;
    float *fp = &f;
    
    double d = 1.01;
    double *dp = &d;

         十二,指针变量使用

指针变量使用有两种,一种是输出指针变量的值(地址),一种是访问指针变量所指向变量的值。

注:指针变量的值本质上是无符号整数,因此可以进行加减运算。

例如:



#include <stdio.h>

int main(void)
{
    int i = 1000;
    int *ip = &i;

    // 输出指针变量ip的值
    printf("%p\n", ip);

    // 直接通过变量名称输出变量i的值
    printf("%d\n", i);

    // 间接通过指针变量输出变量i的值
    printf("%d\n", *ip);

    return 0;
}

       十三,地址变量和空指针

         1.NULL是C语言规定的空指针常量,可以赋值初始化任何类型的指针变量。

          2.指针变量的值本质上是无符号整型,因此可以通过强制转换将整型常量赋值给指针变量。

           3.NULL空指针是C语言保留用来检测指针是否正常的,空指针不指向任何位置,访问值为空指针的指针变量所指向的数据时会报错。

            4.检查指针是否为空,可以用语句,因为指针变量值本质上可以看做是无符号整数,

        十四,指针的运算
         1.指针变量的值本质上是无符号整型,因此可以通过强制转换将整型常量赋值给指针变量
         2.指针(地址)支持加减、自增、自减,支持关系运算(大于小于等于),因为指针的值本质上就是无符号整数。
         十五,数组

   int *p = (int*)0;

// p指向下一个int,地址值+4,int型占4个字节
// 此时p的地址值为4
p ++ ;  

// p指向前一个int,地址值-4
// 此时p的地址值为0
p -- ;

// p赋值为空指针
p == NULL

注:*p++ *p-- 是指p指向的变量值本身加减运算,而不是指针地址运算,因为*p的运算符优先级更高。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值