C语言-基本常识


C语言基本常识

预处理指令

宏定义

头文件

条件编译

指针

在数值变量前加&得到它的地址,在指针变量前加*得到值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
void fun(char * c, int * a, int * b);
int main(){
char str[10];
int a=0, b=0;
gets(str);
fun(str, &a, &b);
printf("upper %d lower %d", a, b);
getch();
return 0;


}

void fun(char * c, int *a, int *b){
while(*c){
if('A'<=*c && *c<='Z'){
(*a)++;
}
if('a'<=*c && *c<='z'){
(*b)++;
}
c++;

}
}

字符串变量就是第一个字符的地址,等价于在变量前加&

循环

for循环当中必须是两个分号,千万不要忘记

do-while()循环的后一个while();的分号一定不能够丢

文件处理

while((c=getchar())!=’\n’)和 while(c=getchar() !=’\n’)的差别

先看a = 3 != 2 和(a=3)!=2 的区别:(!=号的级别高于=号 所以个先计算 3!=2) 个a的数值是得到的1;第二个a的数值是3

“(int)f“表示将f中的值强制类型转换为整型,即将13.8的小数部分舍掉,转换为13

文件操作中的W

是指如果文件存在时且有内容,则清零;没有则创建

只是在打开文件时这样操作,打开后的连续写入,并不会清零

数组

定义数组的中括号中不能为变量,可以是整型常量

定义数组是如果没有指明元素个数,则必须在初始化时赋值

数组名为数组第一个元素的地址

对数组进行初始化,要么两个维度都不写,由赋值的数组确定,或者第二维可以不写,第一维要写,再由赋值数组确定

二维数组的定义方式。第一维的大小由以下方法判断: ①当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小; ②当初值的个数不能被第二维的常量表达式的值除尽时,则第一维的大小:所得的商数+1

二维数组的一维大小,即指二维数组的行数

二维数组初始化时可以省略行数,但不能省略列数

结构

结构定义后可以直接在尾括号的后面加要定义的变量

1
2
3
struct student{
xxxx
}stu;

对结构成员变量的引用

1
2
3
4
5
6
7
struct student{
int age;
}stu, *p;
p=&stu;
>>>stu.age
>>>p->age
>>>(*p).age

结构的实例变量不是地址

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "stdio.h"
#include "stdlib.h"
struct student{
int age;

}

int main(){
struct student stu, *p;
p=&stu;
printf("%d",(*p).age);
getchar();
return 0;

}

优先级

!=的优先级高于==

*的优先级低于[],’.’

java优先级

wj13cQ.jpg

c语言优先级

wj3QV1.png
wj3KbR.md.png

字符和字符串

用单引号表示字符,双引号表示字符串

char x[]=”hello”, y[]={‘h’,’e’,’a’,’b’,’e’}

x的长度为6,y的长度为5

函数

函数形参类型为数组时

可以像声明数组那样定义形参,也可以用数组元素类型的指针

形参赋值

1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
#include<stdlib.h>
void fun(float *p1,float *p2,float *s)
{ s = (float *)calloc(1,sizeof(float)); //s此时已经不bai再指向a了
*s = *p1 + *p2 ++; // 这句话相当du于 *s=*p1+*p2;*p2=*p2+1;
}
main()
{ float a[2] = {1.1,2.2},b[2] = {10.0,20.0},*s = a;
fun(a,b,s); printf("%5.2f\n",*s); //函数中s被指向另一个地址,所以a的内容zhi没变化,此处daos仍是指向a, 此处*s等价于a[0]
}

关键在这一句
s = (float )calloc(1,sizeof(float));
给s新分配空间了
而主函数中s指向的还是数组a
你如果把这句话去掉结果就是11.10了

变量

初始化

其实就是为变量开辟存储空间,标记存储地址,并赋初值的过程

进制

不同进制只是为了方便使用,但最终落实到计算机上都是以二进制存储

十六进制

用0x或0X表示

显示

%x

显示前缀

%#X或%#x

八进制

用0表示

显示

%o

显示前缀

%#o

1
2
3
4
5
void main(void){
int a = 100;
printf("%d %x %o", a); // 100 144 64
printf("%d %#x %#o", a); // 100 0144 0x64
}

本文标题:C语言-基本常识

文章作者:TTYONG

发布时间:2020年08月26日 - 21:08

最后更新:2020年09月25日 - 16:09

原始链接:http://tianyong.fun/C%E8%AF%AD%E8%A8%80-%E5%9F%BA%E6%9C%AC%E5%B8%B8%E8%AF%86.html

许可协议: 转载请保留原文链接及作者。

多少都是爱
0%