c语言
来源:互联网 发布:5g网络g什么意思 编辑:程序博客网 时间:2024/05/22 18:55
1. c的基础:变量的类型,输入输出的格式,常见的运算符,常见的一些字符,字符串的表示,函数等,sizeof,strlen用法;
2. 常见的C语言的结构:if else ,switch
3. 常见的循环结构: for,while,do..while(); continue,break用法;goto不作为主流用法,尽量不要用;
4. 数组,一维数组,二维数组;数组的常见用法;(重点)
5. 函数:入参,出参,返回值,函数的调用;值传递,地址传递(重点); 局部变量,全局变量;常见的关键字:static,extern,const,volatile等用法;(重点)
6. 指针: 指针和变量,字符串,函数,结构体,一维数组,二维数组等用法;这里面最需要掌握的是二维数组;(重点)
7. 结构体的使用; 定义变量,结构体元素赋等;宏,typedef ,enum,等关键字用法; 内存的用法;(内存重点)
8. 数据结构的用法:链表,堆栈,队列等用法;(重点)
9. 项目练习;
1. 变量的类型和大小
char, float ,int ,long, short等字节长度;
char: 1个字节
float:4个字节
int: 4个字节
short:2个字节
long; 4
long long;8
double:8
char a[10]; ----10
int a[10];-----40
float a[10];---40
2. 指针的字节大小
char a[100];
char *ptr1; ptr1 = a; sizeof(ptr1) = 4;
int *ptr2; sizeof(ptr2) = 4
float *ptr3; sizeof(ptr3) = 4
void *p =malloc(100); 仅仅表示p可以转换成char *,int* 等,是没有void *的;
2. C的数据类型:
a. int ,char .float
b. struct ,数组,enum, union;
c. 指针;
d void 类型;
3 常量,变量;
int a;
int a; (0~ 2^32 -1);
int; -2^31~2^31-1
unsigned int ; 0~2^32-1;
short ; -32768~32767
unsigned short: 0~2^16-1;
4.整型数据的溢出
unsigned short a = 65535;
unsigned short b = a +1;
那么.b= 0;
如果是有符号数:
short a = 32767;
short b = a +1;
那么.b=-32768;
正向整型数益处以后,从最小开始,无符号从0开始,有符号从负的最小值开始;
反向溢出时,从正的最大值开始;
5. 字符变量
1)用‘’表示,不能用“”表示;
2)只能是一个字符,不能几个 ;
单引号‘’表示字符,双引号" "表示字符串;
字符变量只占一个字节;
char a = 'c';
#include <stdio.h>
int main()
{
char a;
a = 'c';
printf("a = %c\n",a); ----输出 c :%c表示字符表示
printf("a = %d\n",a); ----输出99 %d表示十进制数
return 0;
}
~
6.
char c1 ,c2[10];
c1 = 'a';
c2 ="a";-----会出段错误;正确的写法:strcpy(c2, "a");
char c3[] = "hello";
int len = sizeof(c3);-----6, 包含了\0
char c4[100]="hello";
int len =sizeof(c4);-----100,内存已经分配
7. strcpy()
#include <string.h>
int main()
{
char a[100] ;
strcpy(a[100], "hello");----error ,it is ===strcpy(a, "hello");
return 0;
}
8. 地址:
char a[100]="hello";
printf("%d\n",a);-----显示-1077796936,是个负数,因为地址最高位为1,被看成了符号位,认为是负数
printf("%x\n",a);-----显示bfc21fb8,是个地址;
9. << , >>
0000 0010 << 1;变成0000 0100 ,相当于乘以2,扩大2倍;
>>1, 变成0000 0001,相当于除以2,减小2倍;
10. int a[100]; a是一个整型数组,有100个元素,a[0]~a[99]
a[100]: 在函数中出现的时候,这个错误叫做越界;
11. if((a/b) == 3) -----用()把首先运算的括起来,避免编译器出问题;
12++, --
int len = 3;
int num;
num = ++len; =====len => len +1; num = len;
printf("num=%d, len=%d\n", num, len);
显示:num=4, len = 4;
******************************
int len = 3;
int num1;
num1 = len++; ----= num1 = len; len = len +1;
printf("num1=%d, len=%d\n", num1, len);
显示:num1 = 3, len=4;
13. 有符号,无符号存放在内存中都是补码的形式;
正整数:原码,反码 ,补码都一样;
如3:
原码:0000 0000 0000 0011
反码:0000 0000 0000 0011
补码:0000 0000 0000 0011
如-3:
原码:1000 0000 0000 0011
反码:1111 1111 1111 1100 在原码的基础上,符号不变(最高的1),其余取反
补码:1111 1111 1111 1101 在反码的基础上,+1;
4字节的-3:前面30个1,后面是01;
如果char c= -3; 1111 1101
补码:1111 1101, 原码:1000 0010+1= 1000 0011 ==〉 -3
14 .
x += y; ==> x = x+y;
x*= y+3; ===> x = x*(y+3);
x%=y; ====>x= (x%y)
x += y+3 ; ====> x = x+(y+3);
15. a=(b=5); 赋值运算符从右往左结合
==> b=5;
a = b;
16. a=12;
a+=a-=a*a;
a-=a*a; ==> a= a-a*a=12-12*12; ==-132;
a+=a; a=-132-132=-264;
17. 逗号运算符
表达式1,表达式2,表达式3,表达式4, 最终的值是表达式4的值
18. C语言以一个语句+“;”,构成一个语句
if()
{
}
else
{
; 表示正常的语句,不过是空语句;
}
19, 对if..else.., while,do while,for, switch等语句, 要用{}把中间的语句括起来;
20. 输入输出函数
字符的输入输出函数:putchar(), getchar()
字符串的输入输出函数:gets(). puts();
格式化的输入输出函数:scanf();printf();
putchar(a); 把字符a输出到显示器;
函数原型:int putchar(int c);
int getchar(); 输入的字符到返回值中;
21 格式化的输入输出
%d:带符号的十进制;
%o:无符号八进制;
%x:无符号十六进制;
%u:无符号十进制;
%c:字符形式,一个字符;
%s:字符串的形式;
%f:实数的形式;
%e:指数的形式;
%g:宽度较短的%f, %e的形式;
L:长整型数;
M(正整数):数据的最小宽度;
N(正整数):对实数,表示n个小数;
对字符串,表示截取多少个字符;
“-”:靠左对齐;
%6.2s:“hello” 输出 6列 ,只取 he,前面补四个空格 ;右对齐
% 6.2s:“hello” 输出 6列 ,只取 he,后面补四个空格 ;左对齐
%6.2f : 1.2345 , 输出的 时候 是 1.23,前面补3个空格 ;右对齐
%-6.2f , 同上,右面补空格,左对齐
22. scanf()
int a,b,c;
scanf("%d,%d,%d",&a,&b,&c);
输入时 :1,2,3,输出为:1,2,3
输入: 1 2 3 输出 1 不定数据
char s1[100];
scanf("%s", s1);
printf("%s\n", s1);
输入: hello 输出 : hello
输入 : hello world 输出 : hello
scanf 遇到空格 结束 输入 ,