`

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;

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

相关推荐

    Linux系统编程笔记.pdf

    Linux系统编程笔记.pdfLinux系统编程笔记.pdfLinux系统编程笔记.pdfLinux系统编程笔记.pdf

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

    有笔记和c语言题,能够更好的理解LInux下的语言编程,题刻量大

    Linux系统编程笔记

    Linux系统编程笔记,C语言编程的常见错误、常用函数、I/O等

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

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

    linux c语言 笔记

    linux c的笔记资料,和大家一起分享 gcc介绍 gdb工具 基本类型、转义符、printf、scanf、操作符 字符处理函数 运算符优先表 文件结构体struct file 宏定义 Linux常用C函数open和read以及write的使用说明 还有一些...

    C语言实现的Linux系统编程课程作业代码及学习笔记

    C语言实现的Linux系统编程课程作业代码及学习笔记 介绍 陈悦老师的“Linux系统编程”课对应的仓库,存放一些上课的代码以及资料等。 (1)文件存放位置 code 使用阿里云的轻量级应用服务器,文件统一放在 /home/...

    C语言学习资料C语言技术编程经验分享C指针经验总结资料合集(25个).zip

    C语言学习资料C语言技术编程经验分享C指针经验总结资料合集(25个): c99标准.pdf ...linux操作系统下c语言编程入门.pdf 《C陷阱与缺陷》学习笔记.txt 一份不错的C语言指针教程.pdf 再再论指针.pdf

    Linux编程精髓 部分笔记

    用户级内存管理 简单的文件I/O 进程管理 串口 Socket

    嵌入式linux C语言的几个要点

    本人接触嵌入式linux C语言不久,这是学习的几点笔记,记录的是一些数据、运算符、表达式的重点。

    linux学习笔记(初学者可共勉)

    这是我学习linux时所写的一些笔记,新手可看,比较简单;主要包括一些linux c 编程开发函数大全,Linux C语言程序设计入门,shell编程,文件编程,VI,编译器,配置文件等等;

    Linux网络编程socket编程学习

    自学Linux网络编程关于socket的编写,包括 server.c 和 client.c 的编写;很详细的介绍了网络套接字socket的C/S模型TCP协议的服务器端和客户端的程序函数以及编写过程;重点介绍多路I/O转接服务器的实现,包括select...

    C语言学习笔记快速入门

    C语言自学笔记,快速入门,C语言组成,数据类型,运算符与表达式,分支结构,循环结构,数组,函数,指针等知识,且包含例题和答案解析。

    嵌入式重点学习笔记.zip

    嵌入式重点学习笔记,包括ARM裸机开发笔记,C语言笔记,Linux操作系统笔记,数据结构与算法笔记,应用编程与网络编程笔记

    linux下V4L2+SDL摄像头采集显示程序

    使用video4linux2编程接口,获得笔记本摄像头影像后,用SDL显示在X Window下。 关键点有二:其一,从video4linux2的编程接口笔者了解到其笔记本摄像头支持YUYV视频帧格式,显示在 SDL上需要将YUYV格式转换成SDL支持...

    Linux下系统编程模板ti ipnc

    在程序猿界混迹了多年,一直有个苦恼的问题,不管是什么样子的编程,最早的汇编,后来C语言,又接触了JAVA,始终有个念头就是整体程序架构问题,不管是你自己用不用操作系统,都要有一套很出色的编程模板。...

    Linux教程+ shell学习笔记 + Shell脚本常用命令+shell脚本100例资源合集

    本文整理了一份Linux shell学习笔记及基本命令合集,包含了LINUX常用操作命令和命令行编辑快捷键、shell基本命令,Linux相关使用配置教程等,需要的朋友可下载试试! shell是一个用C语言编写的程序,它是用户使用...

    嵌入式开发笔记

    嵌入式Linux C语言编程 · C语言的高级编程 · 常用算法 · 函数与程序结构 · 库函数的使用 · 指针 · 数组 嵌入式Linux C语言数据结构 及经典算法编程 · 顺序表 · 链表 · 图 · 哈希表 · 队列 · 查找和排序...

    国嵌笔记。全集全集

    本人学习的国嵌笔记。操作详细! 第一季 精通嵌入式 4 一. 安装tftp服务器 4 二. Samba服务器安装 4 三. NFS服务器 5 四. 安装vsftpd FTP服务器 5 第2季-裸奔吧-ARM 6 一. 安装交叉编译器 6 二. 安装驱动 6 三...

    嵌入式工程师必备压缩包

    此压缩包包括十余部嵌入式经典书籍,包括ARM 开发工程师入门宝典,ARM经典300问,GNU_Linux编程指南,Linux设备驱动程序设计入门,Linux网络编程,Linux下的C语言编程,S3C2410+Linux学习笔记等是一部书籍。

    笔记_嵌入式Linux_C_回调函数

    自己从网上,书上等总结出的... 嵌入式Linux:C 笔记_嵌入式Linux_C_回调函数

Global site tag (gtag.js) - Google Analytics