c语言笔记

基本的变量与数据类型

  • c语言数据类型
     - 整型:int %d
     - 浮点型:float %f
     - 双精度:double  谨记,输入用%lf 输出用%f
     - 字符型:char %c
     - 布尔型:bool
     - void类型:表示空
     - 指针类型
     - 数组类型
     - 结构体,共用体
     - 函数类型
  • 变量的类型与作用域
局部变量:在函数内部定义或在复合语句内部定义的变量。
全局变量:在函数外定义的变量。作用范围是从定义位置到文件末尾。

动态存储方式:程序运行期间根据需要动态分配存储空间
             自动变量,寄存器变量,形参
静态存储方式:由系统分配固定的存储空间
             外部变量
             静态局部变量     
  • 算术运算符
/	:除法    两个整型相除结果为整型,有一个为浮点型时结果为小数
%	:取余
  • 逻辑运算符
&&	称为逻辑与运算符。
||	称为逻辑或运算符。
!	称为逻辑非运算符。
  • 常量的定义
  #define LENGTH 10  

常用语法

  • sizeof()函数
    用于得到某个变量的大小

  • 预处理指令(加载库函数)

#include<stdio.h>
#include<string.h>
  • 基本输入输出语句
#printf语句
printf(格式控制字符串,输出表列)
printf("%d,%c",i,j)
printf("%m.nf,i)       //表示输出数字占m列,保留n位有效数字


#scanf语句
scanf(格式控制字符串,地址表列)
scanf("%d %d",&a,&b)  //变量要加地址符,字符串不用加
  • 字符串输入
- scanf("%s",a); 
scanf遇到空格 制表符 \n时,都会结束输入
\n会留在缓冲区
可以在scanf语句后面加一个getchar()吸收缓存区中的\n避免对后面输入产生影响

- gets(a); 
从输入缓冲区中读取一个字符串(不是直接从控制台读取)
gets只有遇到\n时才会结束输入
\n不会留在缓冲区中
  • 字符串输出
puts(str);        //puts方法输出完字符串后会自动换行
printf("%s",str) //不会自动换行
  • 字符输入
- a = getchar();
从缓存流读入一个字符,如果缓存没有再从控制台读入

- a = getch();
从控制台读入一个字符,不会从流中读取
常用于程序流程控制

//字符输出函数
putchar(a)
  • 数组的定义
int a[3]= {1,2,3};
int a[2][3] = {{1,2,3},{4,5,6}};
char c[10] = "hello";//字符串的默认结束符是'\0'
  • 单引号和双引号
c语言中单引号和双引号不能混用,单引号表示一个字符,双引号表示字符串
‘a’占用一个字节,而“a”占用两个字节,因为后面还有一个默认结束符‘\0’
  • 函数的定义和调用
//定义
int max(int x,int y)
{
   ......
}
//声明
int max(int x,int y);
//调用
max(a,b);
  • 函数参数
1.数组元素做为函数参数与变量的使用相同,传的是值
2.数组名做为函数参数,传的是数组首元素的地址
   此时形参可以是数组名或指针
   而且由于是址传递,在子函数执行过后原函数数组也会改变
3.指针做为函数参数,即将一个变量的地址传送到另一个函数中。调用函数会改变
原实参的值。
  • 指针
int *p;   //指针定义
指针:一个地址
指针变量:存放地址的变量
基类型:表示指针变量可以指向的变量的类型
&      //取地址运算符
*       //指针运算符
  • 通过指针引用数组
a:      a[0]的地址
a+i:     a[i]的地址
*(a+i):  a[i]的值

int (*p)[4]:  指向一维数组的指针
int *p[4]:    存放指针的数组
  • 通过指针引用字符串
//用指针变量指向整个字符串便可以直接引用,字符数组名本质上就是一个指针变量
char *p = "hello";
printf("%s",p);

//把一个字符串传入函数,可以用字符数组名或字符指针变量
  • 指针与函数
指向函数的指针:指针变量存放某个函数的起始地址。int * p(int,int)
指针类型的函数:函数的返回值是一个指针类型的变量。int *max(int x,int y)
  • 动态内存分配
void *malloc(size)  //从内存的动态存储区中分配一个长度为size的连续空间。
                    //返回空间起始地址,如果失败返回空指针

void free(void *p)  //释放指针p所指向的内存空间
  • 结构体
//定义结构体并命名新的类型名Node,此时Node与struct student等价
typedef struct student
{
int a;
int b;
}Node;
  • math库函数
#include<math.h >      //引入库文件

double pow(double x, double y)  //返回 x 的 y 次幂。
double sqrt(double x)      //返回 x 的平方根。
double fabs(double x)      //返回 x 的绝对值。
  • string库函数
#include<string.h>

char *strcat(char *dest, const char *src)  //字符串连接
int strcmp(const char *str1, const char *str2)  //字符串比较
char *strcpy(char *dest, const char *src)   //字符串复制
size_t strlen(const char *str)  //计算字符串 str 的长度
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值