当前位置: 代码迷 >> 综合 >> c语言最基础知识点整理
  详细解决方案

c语言最基础知识点整理

热度:63   发布时间:2024-01-25 14:50:04.0

c语言最基础知识点整理

1.数据类型

int,long,char,double,float,unsigned,long double

1.实型 小数形式和指数形式 小数型数必须有小数点,指数形式e/E后面必须是整数

2.若没初始化则给一个随机数

3.注释: /* .... ... */     //     前者可多行,后者只可一行

4.变量=变量=...=表达式

2.算数运算和表达式

- * / % = + - ++ -- define const () 数学函数

1.除法:整/整=整,浮/浮=浮,浮/整=浮

2.取余运算仅限两个整数之间

3.c语言没有幂运算符

4.++ -- 注意是前缀还是后缀

5.#define xxx 1234   定义宏常量,不是语句是一种预处理命令

6.const常量,声明为const常量后不可更改其值

7.自动转换顺序:long double>double>float>long>int>short>char 取值范围小的赋值给大的是安全的,反之不然。不同数据类型运算结果是运算类型取值较大的那个

8.强制转换:(类型)表达式 注意:未改变表达式的值

9.

数学函数
sqrt(x) 计算平方根
fabs(x) 计算绝对值
log(x) 计算lnx的值
log10(x) 计算lgx的值
exp(x) 计算e的x次方
pow(x,y) 计算x的y次方
sin(x) 计算sinx的值,x的值为弧度值不为角度值
cos(x) 计算cosx的值,x的值为弧度值不为角度值

 

3.输出输入

转义字符 getchar() putchar() printf() scanf()

1.

常用转义字符
    字符                                   含义
'\n' 换行
'\0' 空字符,通常做字符串结束标志
'\t' 制表符
' \" ' 一个双引号
' \' ' 一个单引号
'\ddd' 1到3位8进制ASCII码值所代表的字符,‘\101’->65->A
'\\' 一个反斜线
'\xhh' 1到2位16进制ASCII码值所代表的字符

 

2.字符的输入输出,getchar()回车也能识别

char ch;
ch=getchar();
putchar(ch);

3.%d,%c,%c,%f,%s,%%(输出%号)

格式修饰符
符号 输出用法 输入用法
l 用于输出long 型数据 用于输入long型数据,用于输入double型数据
L 用于输出long double型数据 用于输入long double型数据
h 用于输出short型数据 用于输入short型数据
m 正数向右对齐,负数向左对齐,多余位补空格,若前写0,则补0.当输出实际宽度大于m,则按实际宽度输出。 系统自动按此宽度截取所需数据
.n 对于浮点数,指定输出的浮点数的小数位。对于字符串,用于指定从字符串左侧开始截取的子串字符个数 没有精度修饰符
* %*2d,丢掉2个宽度 对应的输入项在读入后不赋给相应的变量

 

4.scanf("%d%c",&a,&b);若%c前有空格,%c接受第一个非空格字符。

4.控制结构

关系运算符 逻辑运算符 if switch ?: for while do-while 

1.==与!=比较级低于其他比较运算符

2.非0值为真,0值为假

3. ? : 优先级倒数第三

4.若没有break语句,从相应的case开始执行,一直执行到}结束。

switch(a)
{case 1: a++;case 2: a--;break;default:a+=a;
}

5.!逻辑非,优先级最高;&&逻辑与,优先级较高;||逻辑或,优先级较低

6.break;——跳出循环   continue;——结束本次循环

5.函数

标准库函数 自定义函数 变量作用域 变量存储类型

1.自定义函数:函数声明一定在其被调用之前,函数声明不包括函数体。 函数返回值只有一个,但return语句可以有很多个。

2.形参和实参占用不同的空间

3.递归函数体中,必须含有if-else结构

4.变量有全局变量和局部变量,局部变量只在定义所在的花括号里有用。

5.数据类型前未定义变量存储类型时,自动缺省为auto。static定义的变量与程序共存亡。

6.数组

一维数组 二维数组 向函数传递数组 排序查找 

1.数据类型 数组名[常量表达式],常量表达式:数组元素的个数(数组的大小最好用宏定义,以适应未来可能的变化)

2.类型 数组名[行][列] 二维数组的列永远不可剩

3.用数组名做参数时,实参与形参共享空间,可以在函数中调用修改实参

4.一般函数定义形式:类型 函数名(int 数组名[],int n)n为调用时需要的元素个数

5.交换法排序  当前个与后面的比

for(i=0;i<n-1;i++)
{for(j=i+1;j<n;j++){if(a[j]>a[i]){c=a[i];a[i]=a[j];a[j]=c;}}
}

6.冒泡法排序 两个交换将大的排到最后

for(j=0;j<n-1;j++)
{for(i=0;i<n-1-j;i++){if(a[i]>a[i+1]){c=a[i];a[i]=a[i+1];a[i+1]=c;}}
}

7.选择法排序 找到最大的前排

for(i=0;i<n-1;i++)
{k=i;for(j=i+1;j<n;j++){if(a[j]>a[k])k=j;}if(k!=i){c=a[k];a[k]=a[i];a[i]=c;}
}

8.折半查找


int low=0,high=n-1,mid;
while(low<=high)
{mid=(high+low)/2;if(x>num[mid])low=mid+1;else if(x<num[mid])high=mid-1;elsereturn mid;
}

7.指针

指针定义 指针做参数 字符串 字符指针 字符串的访问 字符串输入输出 字符串处理函数

1.类型关键字 *指针变量名 int *p;p=&a;*p=1;

2.只要指明要访问的变量的内存地址就可以修改(读写)   在任何都必须知道指针的指向内容,指针只有在真正指向了一块有意义的内存后,才能访问它的内存

3.指针做参数,直接修改了地址中的值,传的是地址

4.字符串通过字符数组实现,字符串的结束标志'\0'也占一个字节的内存,但它不计入字符串的实际长度,只计入数组的长度。注意:如果没有'\0',那么数组就不代表一个字符串。

5.字符串常量本身代表的就是存放它的常量存储区的首地址,是一个地址常量。char *p="hello";p不能修改字符串常量,它是只读的。   数组名也是一个地址常量,其值不可被修改

6.scanf("%s",str); 读入一个字符串,直到遇空白字符为止. printf("%s",str);直到遇到字符串结束标志为止

7.gets,puts,基本不再用

8.

字符串处理函数
函数功能 一般形式 功能描述及其说明
求字符串长度 strlen(str); 实际长度
字符串复制 strcpy(str1,str2); 2复制到1,会覆盖掉从复制到的位置到最后原来的内容
字符串比较 strcmp(str1,str2) 1>2时,返回值大于0;1<2时,返回值小于0;相等时等于0
字符串连接 strcat(str1,str2) 连接到1的末尾,1的结束符被覆盖掉了,返回值为1的首地址

8.指针和数组及其结构体

指针与一维数组的关系 结构体

1.c语言中的数组名有特殊的含义,它代表存放数组元素的连续存储空间的首地址,即指向数组中第一个元素的指针常量。

2.地址和值的不同表示:int *pa;pa=a;地址:&a[i],&pa[i],a+i;pa+i    值:a[i],pa[i],*(a+i),*(pa+i)

3.区别p+1,p++,p++改变了指针的指向,p+1没有改变指针指向

4.结构体定义     结构体相当于一个数据类型

typedef struct student
{long id;int  age;char name[10];
}stu;

5.c语言允许具有相同结构体的变量进行整体赋值

6.引用:变量名.id;   stu *p;  p->id;(*p).id;

  相关解决方案