计算机基础学习-01-C语言简单笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin0605/article/details/89787385

C语言简单笔记

常见函数

#include<stdio.h>

  • scanf(’%d’,&x);
    • 输入
    • 格式同printf
    • 输入数据时需要在对应位置输入相同的字符
    • %*d
      • 跳过输入

  • printf(‘xxx%d’,x);
    • 输出
    • %d
      • 整数
    • %c
      • 字符
    • %s
      • 字符串
    • %f
      • 实数
      • 默认小数6位
    • %m.nf
      • m:输出占据几位
      • n:小数位数
    • %-m.nf
      • 左对齐
    • %e
      • 指数
      • 默认小数占6位,指数占5位,小数点前必须有1位非零数
    • %m.ne
      • m:输出占据几位
      • n:小数位数
    • %i
      • 同%d
    • %o
      • 八进制
    • %x
      • 十六进制
    • %u
      • 无符号整型
    • %g
      • 系统自动选%f还是%e(选取较短的输出)
    • 附加字符
      • l:输出长整型(加在d,o,x,u前)
      • m:数据最小宽度
      • n:
        • 实数:最小宽度
        • 字符串:截取字符个数
      • -:向左靠

  • putchar©
    • 输出一个字符
  • getchar()
    • 取得一个字符

  • sizeof(int)
    • 查看类型大小
  • #define PI 3.1415
    • 符号常量(不占内存)
  • const float pi = 3.1415;
    • 常变量(占内存)

#include<math.h>

  • sqrt()
    • 开根号
  • fabs()
    • 求绝对值
  • abs()
  • sin()
  • cos()

#include<string.h>

  • puts(str)
    • 输出到终端
  • gets(str)
    • 从终端输入
  • strcat(str1,str2)
    • str1 = str1 + str2
    • 字符串拼接
  • strcpy(str1,str2)
    • str1 = str2
    • 字符串复制,包括’\0’
  • strncpy(str1,str2,n)
    • 将str2前n个字符复制到str1,不包括’\0’,取代str1中前n个
  • strcmp(str1,str2)
    • 字符串比较
  • strlen(str)
    • 字符串长度,不包括’\0’
  • strlwr(str)
    • 转换为小写
  • strupr(str)
    • 转换为大写

#include<stdlib.h>

  • malloc
    • void *malloc(unsigned int size)
    • 开辟动态存储区
  • calloc
    • void *calloc(unsigned n,unsigned size)
    • 开辟动态存储区
  • realloc
    • void *realloc(void *p,unsigned int size)
    • 重新分配动态存储区
  • free
    • void *ree(void *p)
    • 释放动态存储区

数组

  • int a[10] = {0}
    • 初始化时未赋值默认为0
    • int a[] = {1,2,3,4,5}
  • char c[10] = {’\0’}
    • 初始化时未赋值默认为’\0’
//多个输入以空格分隔
//str本身就是地址,不用加'&'
char str[10];
scanf("%s",str);
prinft("%s",str);
  • 指针数组
    • 初始化为NULL
  • int a[可为空][4] = {{},{},{}}

指针

int *i_pointer;
int i = 3;
*i_pointer = 3;//对指针对应的地址空间赋值,i_pointer为指向的地址
i_pointer = &i;
  • &
    • 取变量中的地址
#include<stdio.h>
int main(){
    void swap(int *p1,int *p2);
    int *p1,*p2;
    scanf("%d%d",&a,&b);
    p1 = &a;
    p2 = &b;
    swap(p1,p2);//将指针传输
}
swap(int *p1,int *p2){//根据指针地址取值
    int temp;
    temp = *p1;
    *p1 = *p2;
    *p2 = temp;
}

指针与数组

int a[10] = {0};
int *p;
p = &a[0];//p=a
*(p+i) = a[i];//p++/p--
*(a+i) = a[i];
  • 用数组名做参数的函数
    • f(int arr[],int n)
    • f(int *arr,int n)

多维数组

  • a = &a[0][0]
  • a+i = &a[i]//行指针
    • a+i != &a[i][0]
  • a[0]+i = &a[0][i]

指针与字符串

char *a;
a = "xxx";//将字符串第一个字符地址赋值给指针变量
char str[10];
str[0] = 'r';
str = "xxx";//错误,不能赋值
char *a = "xxxx";
b[2] = ‘x’;//错误,字符串常量不能修改

函数指针

  • (*p)(int,int)
#include<stdio.h>
int main(){
    int max(int,int);
    int (*p)(int,int);
    p = max;
    int a,b,c;
    scanf("%d,%d",a,b);
    c = (*p)(a,b)
}
int max(int x,int y){
    int z;
    if(x>y){
        z = x;
    }else{
        z = y;
    }
    return z;
}

函数指针做函数参数

  • void fun(int (*x1)(int),int (*x2)(int,int)){}

返回指针值的函数

  • 类型名 *函数名(参数列表)

指针数组

  • 类型名 *数组名[数组长度]

预处理

  • #define PI 3.14
    • #undef //终止宏
    • #define S PI*r*r//嵌套
  • 带参数宏
    • #define My(y) y*y
  • #include<stdio.h>
    • 直接查找标准库
  • #include “stdio.h”
    • 先查询用户当前目录,没有再查询标准库

条件编译

#ifdef 标识符
    程序段1
#else 
    程序段2
#endif
#ifndef 标识符
    程序段1
#else 
    程序段2
#endif
#if 标识符
    程序段1
#else 
    程序段2
#endif

自建数据类型

结构体

struct student{
    int num;
    char name[20];
    char sex;
    int age;
    float score;
    char addr[30];
}stu1,stu2;

结构体指针

  • (*结构指针变量).成员名
    • (*p).name
  • 结构指针变量->成员名
    • p->name

链表

#include<stdio.h>
struct student{
    long num;
    float score;
    struct stundet *next;
}
void main(){
    struct student a,b,c,*head,*p;
    head = &a;
    a.next = &b;
    b.next = &c;
    c.next = NULL;
    p = head;
    do{
        //循环遍历方法
        p = p->next;
    }while(p!=NULL)
    return;
}
  • #define LEN sizeof(struct student)
    • 结构体大小
  • struct student *p1 = (struct student *)malloc(LEN)
    • 开辟struct结构大小的内存空间给p1

typedef

  • typedef int Integer;
    • Integer代替int
  • typeof int NUM[100];
  • typeof char* STRIN;
  • typeof int (*POINTER)();

文件操作

  • FILE *fp
    • 文件型指针变量
  • fopen
    • 文件打开
    • fp = fopen(文件名,使用文件方式);
    • 文件使用方式查看表
      • r:读
      • w:写
      • a:追加
      • rb:二进制形式只读
  • fcloes
    • 文件关闭
    • fclose(fp);
    • fputc(ch,fp);
  • fgetc/fputc
    • 字符读写
  • fgets/fputs
    • 字符串读写
  • freed/fwrite
    • 数据块读写
  • fscanf/fprinf
    • 格式化读写
  • feof
    • 判断文件是否结束

位运算

  • &
  • |
  • ^
  • ~
  • <<
  • >>

位段

struct packed-data
{
    unsigned a:2;
    unsigned b:2;
    int i;
} data;

其他

  • 八进制:0开头
  • 十六进制:0x开头
  • 浮点数:f结尾
  • 一个字节8位
    • 1BYTE = 8bit
  • 负数补码
    • 原码取反加一
  • 双精度只能保证15位精度
  • 所有浮点运算都会以双精度进行的

猜你喜欢

转载自blog.csdn.net/weixin0605/article/details/89787385