首页 > 代码库 > C语言基础(一)
C语言基础(一)
C语言基础(一)
- C语言基础(一)
- HelloWorld程序
- 基本数据类型
- 输入输出函数
- 变量
- 指针
- 函数参数的传递
C语言基础(一)
本文适合有一定语言基础的读者阅读
HelloWorld程序
- //引入头文件
- #include <stdio.h> //printf输出函数
- void main(){
- printf("hello world\n");
- // 暂停窗口
- system("pause");
- }
上面是用C语言编写的打印“HelloWorld”程序。下面是该程序各条语句的作用:
#include <stdio.h> 导入名为"stdio.h"的头文件。
头文件作为一种包含功能函数、数据接口声明的载体文件,主要用于保存程序的声明(declaration),而定义文件用于保存程序的实现 (implementation)。
头文件中含有函数的声明,编译时编译器会根据头文件的声明去找到函数的实现。例如:stdio.h头文件中就含有printf函数的声明,编译时,编译器根据头文件的声明去找到printf函数的实现printf.c源文件。
导入指定头文件的格式:#include <头文件名> 或 #include “头文件名”
#include<...> 是包含编译器搜索所带的头文件,或者是PATH的环境变量中能找到的头文件。
#include "..." 是找当前目录和PATH中所带的头文件有没有符合的。或者是你的编译器加上指定头文件的路径,也可以找到。
void main()
main函数是程序的入口,程序总是从main函数开始执行。
printf("hello world\n")
printf函数是C语言中的输出函数
system("pause")
在Window系统下,C语言中的system函数可以执行dos命令。
例如system("pause")就是执行pause命令,这条语句的作用就是让窗口暂停。若没有这条语句,我们只能看到窗口一闪而过,而无法看到程序的输出,因为程序很快执行完,一执行完毕,窗口就会关闭。
在Linux系统下,C语言中的system函数可以执行shell命令
基本数据类型
数据类型 | 占位符 |
---|---|
short | %d |
int | %d |
long | %ld |
float | %f |
double | %lf |
char | %c |
十六进制 | %x |
八进制 | %o |
- #include <stdio.h>
- void main(){
- short a = 12;
- printf("短整型:%d\n", a);
-
- int i = 1;
- printf("整型:%d\n",i);
-
- long l = 349374;
- printf("长整型:%ld\n", l);
-
- float f = 23.3f;
- printf("单精度浮点型:%f\n", f);
-
- double d = 343.434;
- printf("双精度浮点型:%lf\n", d);
-
- char c = ‘a‘;
- printf("字符型:%d\n", c);
-
- //基本数据类型所占的字节数
- printf("short占%d字节\n", sizeof(short));
- printf("int占%d字节\n",sizeof(int));
- printf("long占%d字节\n", sizeof(long));
- printf("float占%d字节\n", sizeof(float));
- printf("double占%d字节\n", sizeof(double));
- printf("char占%d字节\n", sizeof(char));
-
- // C语言编写要符合C99标准,不然可能会导致在Windows下能够正常运行,而在Linux无法正常运行。
- // C99标准的循环写法
- int n = 0;
- for (; n < 10; n++){
- printf("%d\n",n);
- }
-
- // 不符合C99标准的循环写法
- for(int n = 0; n < 10; n++) {
- printf("%d\n",n);
- }
- system("pause");
- }
输入输出函数
- #include <stdio.h>
- #include <stdlib.h>
- void main(){
- int i;
- printf("请输入一个整数:");
- //赋值
- scanf("%d",&i); //控制台输入,&取地址符
- //打印
- printf("i的值为:%d\n",i);
- system("pause");
- }
变量
在C语言中,变量即在程序运行过程中它的值是允许改变的量。为了将不同的变量区分开来,给各个变量命名。变量存储在内存中,因此变量名实际上是对内存空间上一段数据的抽象。为了给不同的变量分类,给各个变量指定数据类型,如整型,浮点型,字符型变量等。不同数据类型的变量占用内存的空间和存储的内容都不一样。如整型变量存储的是整数,字符型变量存储的是字符,指针变量存储的是内存地址等(虽然底层这些数据都是由0和1组成的)。
指针
除了那几种基本数据类型之外,还有一种指针类型的变量,指针变量存储的是变量的内存地址。例如,整型指针变量存储的是整型变量的内存地址。内存地址,系统给数据分配的编号(门牌号)
- #include <stdio.h>
- void main(){
- int i = 90;
- //指针变量,创建一个int类型的指针
- int* p = &i; //p的值就是i这个变量的内存地址
- //%#表示的输出提示方式,如果是8进制,在前面加0,如果是十进制,不加任何字符,如果是十六进制,会加上0x
- printf("%#x\n",p);
-
- float f = 89.5f;
- //创建一个float类型的指针
- float *fp = &f;
- printf("%#x\n", fp);
- system("pause");
- }
函数参数的传递
在C语言中函数参数的传递有两种方式:传值与传地址。
传值就是将实参的值传递给形参,使得形参的值与实参一样。
通过传值的方式将实参的值传递给形参,实际上只是在内存中重新开启一块空间,并拷贝实参的值。对形参的修改操作仅仅只是对另一块内存空间的数据进行修改,不影响实参的值。
传地址就是将实参所在内存单元的地址传递给形参,使得形参指向实参所在的内存地址。
通过传地址的方式将实参的地址传递给形参,形参指向实参所在的那块内存空间,对形参的修改操作就是对存储实参那块内存中的内容进行修改,会影响实参的值。
- #include <stdio.h>
- //传值
- void changeByValue(int i) {
- i = 100;
- }
-
- //传地址
- void changeByAddress(int* p){
- *p = 300;
- }
-
- void main(){
- int i = 90;
-
- //创建一个int类型的指针
- int *p = &i;
-
- //输出地址
- printf("p的地址:%#x\n",&p);
- printf("i的地址:%#x\n",&i);
-
- printf("i的值为:%d\n", i);
- // 通过地址修改变量i的值
- *p = 200;
- printf("i的值为:%d\n", i);
-
- changeByValue(i);
- printf("通过值传递修改i的值:%d\n", i);
- changeByAddress(&i); // int *p = &i;
- printf("通过传地址修改i的值:%d\n",i);
- system("pause");
- }
程序运行结果如图:
由程序的运行结果也可以看出,值传递无法修改实参的值,传地址可以修改实参的值。
C语言基础(一)