C语言知识点

c语言

  1. 标识符命名规则
①只能由字母、数字和下划线组成,且必须以英文字母或下划线开头。
②标识符有长度限制,超过的部分会被忽略,不同编译器长度限制不同
③关键字不能作为标识符。
c语言关键字(auto、break、case、char、const、continue、default、do、double、
else、enum、extern、float、for、goto、if、int、long、register、return、short、
signed、sizeof、static、struct、switch、typedef、union、unsigned、void、
volatile、while、inline、restrict、_Bool、_Complex、_Imaginary、_Alignas、
_Alignof、_Atomic、_Static_assert、_Noreturn、_Thread_local、_Generic)

main define scanf printf If不是标识符

2.标识符的存储类别

register:寄存器类型	寄存器变量存储在寄存器中,无法获取寄存器变量的地址
auto:自动存储类型	变量默认为auto类型,自动变量不会默认初始值
static :静态存储类型	从程序执行开始一直存在直到程序结束;全局变量(静态变量)默认初始值为0
extern:外部链接类型	在其他文件中已经声明的具有文件作用域的变量,本文件调用的话要用extern重新声明一下
		关键字extern声明属于引用声明,extern声明不会引起内存分配,该变量必须在其他文件中有过定义声明(第1次声明)

3.格式化输出

常用
整型:%d、%o、%x/%X :十进制,八进制,十六进制小写/十六进制大写
实型:%f、%lf	:单精度、双精度 (默认输出小数点后六位)
	  %m.nf:表示输出小数点后n位,总宽度为m,若数据宽度不足则用空格补齐,若数据宽度超出,整数位正常输出,小数位输出n位
字符型:%c、%s :单个字符、一个字符串

少见
	%e: 科学计数法, 使用小写"e" 
	%E: 科学计数法, 使用大写"E"
	%g: 使用%e或%f中较短的一个 
	%G: 使用%E或%f中较短的一个 
 	%u: 无符号整数 
 	%p: 一个指针 

特殊使用:
	%-d:输出整型时右对齐,+表示左对齐,默认左对齐
	%0md:输出宽度为m的整型,如果数据不够,则用0补齐(当数据是左对齐时可以看到补的0,当数据时有对齐时,用空格替代了0)
	%#f:当对应的数据没有小数点时,会自动加上小数点
	%#x:输出的十六进制数据前会加上“0x”前缀
	%#o:输出的八进制数据前会加上“0”前缀

4.运算符
初等运算符 > 单目运算符 > 算术运算符 > 关系运算符 >( && > ||)> 条件运算符 > 赋值运算符 > 逗号运算符

1.初级运算符:()、[]、->、.
2.算术运算符:+、-、*、/、%、++、--
3.关系运算符:==、!=、>、<、>=、<=
4.逻辑运算符:&&、||、!
5.赋值运算符:=、+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=
6.位运算符:&、|、^、~、<<、>>
7.其他运算符:字节数:sizeof()、下标:[]、逗号:,

5.math库常用函数

double exp( double arg ):返回e 的arg次幂
double fabs( double arg ):返回arg的绝对值
double fmod( double x, double y ):返回参数x/y的余数
double pow( double base, double exp ):返回以参数base 为底的exp 次幂
double sqrt( double num ):返回参数num的平方根
double exp( double arg ):返回参数e的arg次幂
double log( double num ):返回参数num的自然对数
double log10( double num ):返回参数num以10为底的对数

6.string库常用函数

size_t strlen( char *str ):返回字符串str 的长度
char *strncat( char *str1, const char *str2, size_t count ):将字符串from 中至多count个字符连接到字符串to中,追加空值结束符
int strncmp( const char *str1, const char *str2, size_t count ):比较字符串str1 和 str2中至多count个字符
char *strcpy( char *to, const char *from ):复制字符串from 中的字符到字符串to,包括空值结束符。返回值为指针to。
char *strncpy( char *to, const char *from, size_t count ):将字符串from 中至多count个字符复制到字符串to中。如果字符串from 的长度小于count,其余部分用'\0'填补
char *strchr( const char *str, int ch ):返回一个指向str 中ch 首次出现的位置,当没有在str 中找ch到返回NULL。
void *memcpy( void *to, const void *from, size_t count ):从from中复制count 个字符到to中,并返回to指针。

7.数组与指针结合实用

一维数组与指针
	int arr[N];
	对于指针指向一维数组这两种写法表示相同的意思:int *pa=arr; int *pa=&arr[0];
	对于一维数组的输出以下是等价的:arr[i]==pa[i]==*(arr+i)==*(p+i)
二维数组与指针
	int arr[N][M];
	指针指向二维数组有以下写法:
		①int (*pa)[N]=arr;
		②int *pb=arr[K];		//此时的K代表二维数组的第几个元素
		如果使用第①种方式指向数组,那么输出时一下是等价的:arr[i][i]==*(*(pa+i)+j)==*(pa[i]+j)==(*(pa+i)[j])
		如果使用第②种方式指向数组,那么输出时应注意:*(pb+i*M*(int)sizeof(int)+j)		//注意这里sizeof(二维数组存储的元素类型)

8.结构体与共同体

结构体的定义:
struct[结构类型名]
 {
 类型说明符 成员变量名;
 …
 类型说明符 成员变量名;
 }[结构变量列表];
 
 联合体的定义:
 union[结构类型名]
 {
 类型说明符 成员变量名;
 …
 类型说明符 成员变量名;
 }[结构变量列表];
 结构体与联合体的区别:
 	①结构体中每个元素都可以存储数据,而联合体只有一个元素可以存储数据;
 	②结构体的大小是大于每个元素大小之和(根据每个元素的存储顺序,需要内存对齐),
 	 联合体大小等于联合体中最大元素的大小的整数倍。

9.文件
向文件in.txt中写入字符串HelloWorld

#include<stdio.h>
int main() {
	char str[]="HelloWorld";
	FILE *pf=fopen("in.txt","w");
	fprintf(pf,str);
	fclose(pf);
	return 0;
}

从文件a.txt中读取三个整数,然后把这三个整数保存到b.txt中,两整数之间一个空格

#include<stdio.h>
int main(){
    int one,two,three;
    FILE *a,*b;
    a=fopen("a.txt","r");
    b=fopen("b.txt","w");
    int n=0;
    while(n!=1)
    {
        fscanf(a,"%d%d%d",&one,&two,&three);
        fprintf(b,"%d %d %d",one,two,three);
        n++;
    }
    fclose(a);
    fclose(b);
    return 0;
}

读取a.txt中文本,统计文本中字母数量

#include<stdio.h>
int main(){
FILE *fp;
char word;
int num=0;
fp=fopen("a.txt","r");
while(!feof(fp))
{
    fscanf(fp,"%c",&word);
    if((word>='A'&&word<='Z')||(word>='a'&&word<='z'))
        num++;
}
printf("%d",num-1);
fclose(fp);
return 0;
}
  • 3
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值