C语言入门篇主要包含内容有:一.分支和循环语句 二.函数 三.数组 四. *** 作符 .五.指针 .六.结构体 七.函数栈帧的创建和销毁
目录
1.编写第一个程序
2.数据类型
3.变量
4.常量
5.字符与注释
6. *** 作符
7.关键字
8.宏
9.指针
10.结构体struct
11.其他
1.编写第一个程序
在编译器(vs2022)创建项目,项目名不用特殊字符,空格,汉字较好。然后创建源文件.c文件,在源文件中编写代码。例如:编写hello world程序的代码如下->
第一行代码表使用标准输入输出库,是为使用printf库函数的准备,第二行表调用返回值为整形(int)的主函数main,{}内表函数内容,第三行即调用printf函数打印内容,第四行表主函数返回值。按下ctrl+F5 编译-链接-运行 在屏幕打印hello world。主函数是一个程序的入口,运行会先从主函数执行,在一个工程中(多个源文件)只能有一个主函数。
2.数据类型C语言中有多种数据类型,用sizeof关键字可求出他们所占的字节数。(一字节=8bit位)
sizeof的返回类型是size_t是unsigned int 无符号整形的意思。
3.变量变量的定义:int a=100;float weight=45.4f;
局部变量:在{}内
全局变量:在{}外(用extern声明可调用其他文件的全局变量)
变量的作用域:变量的使用范围(全局变量的作用域为整个工程)
变量的生命周期:变量进入作用域到出作用域(全局变量的生命周期为整个程序的生命周期)
例如下面代码:代码1.局部变量a在出}生命周期结束
代码2:局部变量与全局变量同名,局部优先
4.常量分为 (1)常量:如pai=3.14(整形常量),‘a’(字符常量),“abcd”(字符串常量)
(2)const修饰的常变量(将变量修饰为常属性,不能被修改,但编译器不视为常量表达式),例如在定义数组时不能用此变量作为元素个数。(c99支持的变长数组才可以)
(3)#define定义的标识符常量
(4)enum关键字枚举的常量如:enum sex{male,female};male和female视为常量。
5.字符与注释字符:(由单引号修饰)即单个字符‘a’,‘b’等。
字符串:(由双引号修饰)多个字符,如“abcdefg”,一个汉字占两个字符。
转义字符:顾名思义为被改变字符意义的字符。
如下:
\ddd先将一到三位八进制数转化为十进制数然后按对应ASCII表输出字符,\xdd则是将十六进制数dd(或第一个d)转化为十进制数。
注释:可用/* */或//但前者不能嵌套使用。(vs2022快捷键ctrl+k+c,取消注释ctrl+k+u)
6. *** 作符单目 *** 作符
逗号:例如int d=(a-=3,b+=a,c=a-b,b=a-4);表达式会从左到右计算,结果是最后一个表达式。
其他:[]用于数组下标引用 。
()函数调用 *** 作符, *** 作数是函数和函数的参数。
.和->用于结构体类型变量访问结构体成员。(格式:结构体变量.结构体成员,结构体指针->结构体成员)
7.关键字例如:
关键字register:尽量将变量放在寄存器中,因为集成在CPU上的寄存器有限。
关键字typedef可理解为将类型再起个名字,如
typedef struct LinkList{
int data;
struct LinkList*next;
}LL;
可理解为struct LinkList 类型被再起了个名字为LL。
关键字static(将变量放在具有直到程序结束的生命周期的静态区)
(1)static修饰在函数中局部变量时,将变量放在静态区,而不是栈区,出了局部范围,不会销毁,下次调用函数时仍存在。
(2)static修饰全局变量时,全局变量本有外部链接属性,在其他源文件可以用extern调用,但被static修饰后则只有内部链接属性,自能在自身源文件中使用。(全局变量作用域变小了)
(3)static修饰的函数时同(2),将函数的作用域变小了。
8.宏用#define max 100可以宏定义一个常量max为100,或用#define add(a,b) ((a)+(b))定义一个类似加法函数的宏,宏本质是编译器在预处理下的替换,后者加了多个括号是为了防止在替换后发生的运算级优先问题导致的结果不正确。
9.指针一个内存单元是1个字节(8个byte位),每个byte位有0、1。在32位平台下有32根地址线/电线,产生2^32种电平情况管理内存单元的编号(即他们的地址),最多共能管理2^32/2^30 G=4 G的内存空间。
变量存在内存中,C语言用指针变量来储存变量的地址,不同类型的指针的大小在同一平台下是相同的(32位平台下为4字节,64位平台下为8字节)。但不同类型的指针的步长不同,可以体现在指针的运算上。
10.结构体struct定义结构体:
struct student{
char name[10];
int age;
char sex[5];
char nums[20];
};
初始化一个结构体:
struct student s1={"name",20,"sex","88888888"};
访问结构体成员:
Printf("%s",s1.name);//打印结构体变量s1的成员name
11.其他scanf函数在读取成功时返回1;读取或调用失败时返回EOF,EOF是-1.
......
内容仅供参考。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)