`

Linux编程笔记--C语言基础

阅读更多
去年学习linux时的部分笔记,浅显易懂,比较简单

*A是65

//dataTypeExample1.c
#include<stdio.h>
main()
{
   int x;
   x=10*9*8*7*6*5*4*3*2*1;
   print("%d",x);
}

//dataTypeExample2.c
#include<stdio.h>
#define PI 3.14159
main()
{
  float s,r;
  scanf("%f",&r);
  s=r*r*PI;
  printf("%8.3f\n",s);
}

//dataType1.c
#include<stdio.h>
main()
{
   int a=3,b=5,x;
   x=3+5;
   printf("%d\n",x);
   x=a-b;
   printf("%d\n",x);
   x=a*b;
   printf("%d\n",x);
   x=a%b;
   printf("%d\n",x);
   x=a/b;
   printf("%d,%d\n",x,x);

   int k=5; float l=3.5;
   float m;
   m=!k&&!l;
   printf("%f\n",m);
  
   printf(sizeof(int));
   printf(sizeof(float));
}

printf,scanf不是保留字;
getchar()函数,输入字符,程序被中断,等待用户输入;
putchar()函数,输出字符;
pow(x,y)表示X的y次方;

//顺序程序设计 example1.c
#include<stdio.h>
main()
{
  int a=11,b=22,c=33;
  printf("a=%d\tb=%d\tc=%d\n",a,b,c);
  {
    int b=23;float c=3.4;
    printf("a=%d\tb=%d\tc=%d\n",a,b,c);
    a=b;
  }
  printf("a=%d\tb=%d\tc=%d\n",a,b,c);
}
//顺序程序设计 example2.c
#include<stdio.h>
main()
{
  int a;
  char b;
  a=getchar();
  b=getchar();
 
  printf("a=%c\ta=%d\tb=%c\tb=%d\n",a,a,b,b);

}
//两个getchar要连续输入再敲回车;


//顺序程序设计 example3.c
#include<stdio.h>
main()
{
  int a=65;
  char b='B';
  putchar(a);
  putchar(65+1);
  putchar(b);
  putchar('B'+1);
  putchar('\n');//回车
 
}

//顺序程序设计 example4.c
#include<stdio.h>
main()
{
  int i=8;
  printf("%d\t%d\t%d\n",++i,--i,i--);
  //从右至左计算
}

//选择程序设计 Xexample1.c
#include<stdio.h>
main()
{
   int x,y,max;
   scanf("%d,%d",&x,&y);
   if(x>=y)
   {
       max=x;
       printf("%d\n",max);
   }
   else
   { 
      max=y;
      printf("%d\n",max);
   }
}

//循环程序设计 xunhuan.c
#include<stdio.h>
main()
{
    char ch;
    int num=0;
    ch=getchar();
    while(ch!='\n')
    {
        num++;
        ch=getchar();
    }
    printf("%d\n",num);
}

////////////////////////////////////
数组
字符串拷贝 strcpy()
字符串连接 strcat()
%u 无符号整形值
字符串以\0结束
字符串长度 strlen()
字符串比较 strcmp()
puts(str) 输出字符串
gets(str) 输入字符串
//例1  二维数组
#include<stdio.h>
main()
{
   int i,j,a[3][4];
   for(i=0;i<3;i++)
   {
        for(j=0;j<4;j++)
        {
           scanf("%d",&a[i][j]);
        }
   }
    for(i=0;i<3;i++)
   {
        for(j=0;j<4;j++)
        {
           printf("%d",&a[i][j]);
        }
          printf("\n");
   }
}
//例2  gets函数有警告 没关系 继续运行
#include<stdio.h>
main()
{
     int i,j,m;
     char s1[20],s2[20];
     gets(s1);
     scanf("%d",&m);
     i=m-1;j=0;
  
     while(s1[i]!='\0')
     {
           s2[j]=s1[i];
           i++;j++;
     }
     s2[j]='\0';
     puts(s2);
}


//////////////////////////////////////
变量的存储特性:
自动型     auto
静态型     static
寄存器型   register 最多两个
外部型     extern

#include<stdio.h>
long fac(unsigned n)
{
   long f;
   if(n==0)
   {
       f=1;
   }
   else
   {
       f=n*fac(n-1);
   }
   return f;
}

main()
{
    long y;
    int  n;
    scanf("%d",&n);
    y=fac(n);
    printf("%d!=%d\n",n,y);
}


//////////////////////////////////////
3个预处理命令: 
宏定义
#define 宏名 串(宏体)
#define PI   3.14159
#undef 终止宏定义的作用域;
#undef PI
带参数的宏定义
#define S(a,b) a*b
引用宏只占编译时间,不占运行时间;
宏的引用时用表达式替代形参
引用  S(a+c,b+c)
展开  a+c*b+c

包含文件
#include<stdio.h>

条件编译
///////////////
#if  常量表达式
     程序段
#endif
///////////////
#if  常量表达式
     程序段 1
#else
     程序段 2
#endif
////////////////
#if  常量表达式
     程序段 1
#elif
     常量表达式
     程序段 2
#else
     程序段 3    
#endif
////////////////
#ifdef  标示符   //如果已经定义
        程序段
#endif 
////////////////
#ifndef  标示符  //如果没有定义
        程序段
#endif 
////////////////

//例1
#include<stdio.h>
#define PI 3,14
#define R  3.0
#define R2 3.0
#define L 2*PI*R
#define S PI*R*R
main()
{
   printf("L=%f\nS=%f\n",L,S);
   #define R2
}

//例2
#include<stdio.h>
#define DEBUG    //调试语句  发布给客户的时候注释掉 
main()
{
    #if  5
          printf("AAA\n");
    #else
          printf("BBB\n");
    #endif

    #ifdef DEBUG
          printf("CCC\n");
    #endif
}
///////////////////////////////////////////
指针:
指向函数的指针的定义方式:
类型   (*指针变量名) ();
例如:  int (*p)();

main()
{
   int max();
   int (*p)();
   int a,b,c;
   p=max;
   scanf("%d,%d",&a,&b);
   c=(*p)(a,b);
   printf("%d",c);
}

//指针函数
#include<stdio.h>
main()
{
   int a,b,*p;
   int *max();
   scanf("%d,%d",&a,&b);
   p=max(a,b);
   printf("max=%d",*p);
}
int *max(int x,int y)
{
     if(x<y)
    {
       return(&y);
    }
    else
    {
       return(&x);
    }
}
//////////////////////////////////////////
结构体:
定义类型的时候定义变量
结构体成员又是一个结构体变量

struct date
{
  int month;
  int day;
  int year;
};
struct student
{
  char name[20];
  char sex;
  int age;
  struct date birthday;
}stu1,stu2;
stu1={"hank",'N',22,4,24,1986};

///////////////////////////////////////////////
共同体:
union date
{
  int month;
  int day;
  int year;
}d1,d2,d3;

///////////////////////////////////////////////
枚举型
enum 枚举类型名 {取值表}
例如,enum weekdays {Sun,Mon,Tue,Wed,Thu,Fri,Sat};
元素自动编号 0,1,2,3......

///////////////////////////////////////////////
将变量名换成别名 在定义体前面加上typedof:
typedof struct date {.....} DATE;
typeof int INT;
INT x=100;   int的别名为INT;********

///////////////////////////////////////////////
位段结构:
特殊的结构类型,其所有成员均以二进制位为单位定义长度,
并称成员为位段;
加入无名字段,其后的字段从下一个字节开始存储;
例如,cpu的状态寄存器,按位段类型定义如下:
struct status
{
    unsigned sign:        1;  /*符号标志*/
    unsigned zero:        1;  /*零标志*/
    unsigned carry:       1;  /*进位标志*/
    unsigned :            0;  /*长度为0的无名位段*/
    unsigned parity:      1;  /*奇偶/溢出标志*/
    unsigned half_carry:  1;  /*半进位标志*/
    unsigned negative:    1;  /*减标志*/
}flags;

//////////////////////////////////////////////////
分享到:
评论

相关推荐

    c及linux基础培训笔记--超详细

    这些内容构成了C语言和Linux基础的初步学习框架,包括了硬件管理、文件系统操作、命令行交互以及文本编辑器的使用,是进一步深入学习Linux系统和编程的基础。通过熟练掌握这些知识,你可以更好地理解和操作Linux系统...

    Linux课堂笔记-改

    ### Linux课堂笔记知识点详解 #### 一、基本概念与用户标识 - **用户名称**:在Linux系统中,用户名称用于标识系统中的不同用户账户,例如“RR”或...这些基础知识对于深入学习Linux系统管理和编程都非常重要。

    精通UNIX下C语言编程与项目实践+源代码+笔记.zip_C语言项目linux_Linux/Unix编程_Linux下的c语言开

    在深入探讨UNIX下C语言编程与项目实践的知识点之前,我们先来理解一下这个资源包的构成。...通过这些资源,开发者不仅可以提升C语言编程技能,还能积累Linux系统编程的实际经验,为未来的项目开发打下坚实基础。

    linux下C语言开发笔记整理

    Linux下C语言开发笔记整理涵盖了从基础知识到网络通信的多个方面,主要围绕在Unix/Linux系统环境下使用C语言进行软件开发的各项技术与理论。以下是从文件提供的信息中提炼的知识点。 ### Unix/Linux系统基本命令和...

    高级语言程序设计学习笔记-C语言

    C语言的语法简洁明了,因此成为许多程序员入门的首选语言,也是许多其他现代编程语言的基础。 **C语言的关键特性** 1. **结构化编程**:C语言支持结构化编程,它强调通过函数和控制结构(如if-else、switch、for、...

    Linux下X-Window系统程序设计简介.pdf

    本文将详细介绍Linux下X-Window系统的程序设计,涵盖X-Window系统的结构、组成部分、编程接口、图形用户界面设计等方面。 一、X-Window系统结构 X-Window系统是Linux和其他UNIX系统中使用的图形窗口系统,它提供了...

    基于Linux系统分析计算机C语言编程技巧.pdf

    编程人员基于Linux系统进行C语言编程时,应掌握gcc编译器技术,以此为基础进行源程序编写。具体来讲,gcc便一起种主要由三项内容较为重要,—g、—o、—c分别代表了编程、文件名、代码输出,掌握了这三点,便能掌握...

    linux内核驱动笔记-尚观

    例如,strlen、strcpy和strcat是C语言中的字符串操作函数,它们在内核编程中也有应用,但需要注意的是,内核编程需要遵循严格的内存安全和同步规则,不能像用户空间那样随意使用这些函数。 最后,内核启动过程涉及...

    2020黑马C语言基础课堂笔记 - day01.pdf

    计算机系统组成与硬件系统 计算机系统主要由硬件系统和软件系统组成。硬件系统又分为主机部分和外设部分。...在C语言编程实践中,需要特别注意标准的适用性、编译器的版本和特性,以及操作系统对C语言的支持情况。

    JAVA新手入门笔记-编程基础知识

    JAVA新手入门笔记-编程基础知识 本资源摘要信息将对JAVA新手入门笔记-编程基础知识进行详细的解读和分析,涵盖JAVA语言的优缺点、跨平台方案、体系结构、语言分类、架构体系、高级语言的优势、中间层的威力、函数式...

    linux c语言 笔记

    ### Linux C语言笔记知识点 #### 一、GCC介绍与GDB工具 - **GCC (GNU Compiler Collection)**: 是一个用于编译C/C++等语言的标准工具链。它提供了丰富的功能来帮助开发者进行高效的代码编译。 - **编译命令**: `...

    GNU_LINUX 系统编程笔记.pdf

    以上是基于《GNU/Linux系统编程笔记》中的知识点总结,涵盖了错误处理、I/O操作、文件目录管理、进程控制、线程、内存管理、IPC以及守护进程设计等关键领域,对于深入理解Linux系统编程有重要价值。

    Linux下的C编程基础.pdf

    ### Linux下的C编程基础知识点概览 #### 一、C语言简介与特性 C语言,由贝尔实验室的Dennis Ritchie于20世纪70年代初为了UNIX系统的开发而创造,是在B语言基础上发展起来的一种高级编程语言。C语言的设计初衷在于...

    4412开发板学习笔记---Linux驱动的学习方法

    需要尽快掌握基础知识:如开发板的基本使用,硬件基础知识,开发环境的搭建,Linux常用工具,内核的编译以及烧写,Linux shell命令,C语言基础,Linux内核的简单裁减和配置,Linux系统编程等等。没有上面的基础知识...

    linux嵌入式C语言学习教程【李慧芹老师】的部分代码【看视频自己写的】.zip

    linux嵌入式C语言学习教程【李慧芹老师】的部分代码【看视频自己写的】linux嵌入式C语言学习教程【李慧芹老师】的部分代码【看视频自己写的】linux嵌入式C语言学习教程【李慧芹老师】的部分代码【看视频自己写的】...

    Linux编程精髓 部分笔记

    ### Linux编程精髓部分知识点 #### 用户级内存管理 在Linux编程中,用户级内存管理是极为重要的一个方面,它涉及...以上是对“Linux编程精髓部分笔记”所涉及知识点的详细解释和总结,希望对学习Linux编程有所帮助。

    Linux C语言初学笔记

    本笔记将围绕Linux命令和C语言的入门知识展开。 首先,让我们深入了解一下Linux命令。命令是与Linux操作系统交互的基本方式,它由三部分组成:命令、选项和参数。例如,`ls`命令用于列出目录中的文件。`-a`选项表示...

    尚观培训linux许巍老师关于c语言的课程笔记和讲义

    【尚观培训Linux许巍老师关于C语言的课程笔记与讲义】是针对想学习或深化C语言理解的IT从业者及爱好者的一份宝贵资源。尚观是一家知名的IT培训机构,其提供的课程涵盖了广泛的IT领域,包括嵌入式Linux驱动开发。这份...

    linux-windows编程基础

    5. **C语言编程**:Linux编程往往基于C语言,熟悉C语言的内存管理、文件操作、多线程编程等。 6. **Makefile和编译构建**:理解如何编写Makefile来自动化编译链接过程,以及GCC/G++编译器的使用。 《Windows底层...

Global site tag (gtag.js) - Google Analytics