首页 > 代码库 > C语言基础(一)

C语言基础(一)

C语言基础(一)

C

  • C语言基础(一)
    • HelloWorld程序
    • 基本数据类型
    • 输入输出函数
    • 变量
    • 指针
    • 函数参数的传递

C语言基础(一)

本文适合有一定语言基础的读者阅读

HelloWorld程序

  1. //引入头文件 
  2. #include <stdio.h> //printf输出函数 
  3. void main()
  4. printf("hello world\n");  
  5. // 暂停窗口 
  6. system("pause"); 

上面是用C语言编写的打印“HelloWorld”程序。下面是该程序各条语句的作用:

  1. #include <stdio.h> 导入名为"stdio.h"的头文件。

  • 头文件作为一种包含功能函数、数据接口声明的载体文件,主要用于保存程序的声明(declaration),而定义文件用于保存程序的实现 (implementation)。

  • 头文件中含有函数的声明,编译时编译器会根据头文件的声明去找到函数的实现。例如:stdio.h头文件中就含有printf函数的声明,编译时,编译器根据头文件的声明去找到printf函数的实现printf.c源文件。

  • 导入指定头文件的格式:#include <头文件名> 或 #include “头文件名”

  • #include<...> 是包含编译器搜索所带的头文件,或者是PATH的环境变量中能找到的头文件。

  • #include "..." 是找当前目录和PATH中所带的头文件有没有符合的。或者是你的编译器加上指定头文件的路径,也可以找到。

  1. void main()

  • main函数是程序的入口,程序总是从main函数开始执行。

  1. printf("hello world\n")

  • printf函数是C语言中的输出函数

  1. system("pause")

  • 在Window系统下,C语言中的system函数可以执行dos命令。

  • 例如system("pause")就是执行pause命令,这条语句的作用就是让窗口暂停。若没有这条语句,我们只能看到窗口一闪而过,而无法看到程序的输出,因为程序很快执行完,一执行完毕,窗口就会关闭。

技术分享

执行pause命令

  • 在Linux系统下,C语言中的system函数可以执行shell命令

基本数据类型

数据类型 占位符
short %d
int %d
long %ld
float %f
double %lf
char %c
十六进制 %x
八进制 %o
  1. #include <stdio.h> 
  2. void main()
  3. short a = 12
  4. printf("短整型:%d\n", a); 
  5.  
  6. int i = 1
  7. printf("整型:%d\n",i); 
  8.  
  9. long l = 349374
  10. printf("长整型:%ld\n", l); 
  11.  
  12. float f = 23.3f
  13. printf("单精度浮点型:%f\n", f); 
  14.  
  15. double d = 343.434
  16. printf("双精度浮点型:%lf\n", d); 
  17.  
  18. char c = ‘a‘
  19. printf("字符型:%d\n", c); 
  20.  
  21. //基本数据类型所占的字节数 
  22. printf("short占%d字节\n", sizeof(short)); 
  23. printf("int占%d字节\n",sizeof(int)); 
  24. printf("long占%d字节\n", sizeof(long)); 
  25. printf("float占%d字节\n", sizeof(float)); 
  26. printf("double占%d字节\n", sizeof(double)); 
  27. printf("char占%d字节\n", sizeof(char)); 
  28.  
  29. // C语言编写要符合C99标准,不然可能会导致在Windows下能够正常运行,而在Linux无法正常运行。 
  30. // C99标准的循环写法 
  31. int n = 0
  32. for (; n < 10; n++){ 
  33. printf("%d\n",n); 

  34.  
  35. // 不符合C99标准的循环写法 
  36. for(int n = 0; n < 10; n++) { 
  37. printf("%d\n",n); 

  38. system("pause"); 

输入输出函数

  1. #include <stdio.h> 
  2. #include <stdlib.h> 
  3. void main()
  4. int i; 
  5. printf("请输入一个整数:"); 
  6. //赋值 
  7. scanf("%d",&i); //控制台输入,&取地址符 
  8. //打印 
  9. printf("i的值为:%d\n",i); 
  10. system("pause"); 

变量

在C语言中,变量即在程序运行过程中它的值是允许改变的量。为了将不同的变量区分开来,给各个变量命名。变量存储在内存中,因此变量名实际上是对内存空间上一段数据的抽象。为了给不同的变量分类,给各个变量指定数据类型,如整型,浮点型,字符型变量等。不同数据类型的变量占用内存的空间和存储的内容都不一样。如整型变量存储的是整数,字符型变量存储的是字符,指针变量存储的是内存地址等(虽然底层这些数据都是由0和1组成的)。

指针

除了那几种基本数据类型之外,还有一种指针类型的变量,指针变量存储的是变量的内存地址。例如,整型指针变量存储的是整型变量的内存地址。内存地址,系统给数据分配的编号(门牌号)

  1. #include <stdio.h> 
  2. void main()
  3. int i = 90
  4. //指针变量,创建一个int类型的指针 
  5. int* p = &i; //p的值就是i这个变量的内存地址 
  6. //%#表示的输出提示方式,如果是8进制,在前面加0,如果是十进制,不加任何字符,如果是十六进制,会加上0x 
  7. printf("%#x\n",p); 
  8.  
  9. float f = 89.5f
  10. //创建一个float类型的指针 
  11. float *fp = &f; 
  12. printf("%#x\n", fp); 
  13. system("pause"); 

函数参数的传递

在C语言中函数参数的传递有两种方式:传值与传地址。

  1. 传值就是将实参的值传递给形参,使得形参的值与实参一样。

  • 通过传值的方式将实参的值传递给形参,实际上只是在内存中重新开启一块空间,并拷贝实参的值。对形参的修改操作仅仅只是对另一块内存空间的数据进行修改,不影响实参的值

  1. 传地址就是将实参所在内存单元的地址传递给形参,使得形参指向实参所在的内存地址。

  • 通过传地址的方式将实参的地址传递给形参,形参指向实参所在的那块内存空间,对形参的修改操作就是对存储实参那块内存中的内容进行修改,会影响实参的值

  1. #include <stdio.h> 
  2. //传值 
  3. void changeByValue(int i)
  4. i = 100

  5.  
  6. //传地址 
  7. void changeByAddress(int* p)
  8. *p = 300

  9.  
  10. void main()
  11. int i = 90
  12.  
  13. //创建一个int类型的指针 
  14. int *p = &i; 
  15.  
  16. //输出地址 
  17. printf("p的地址:%#x\n",&p); 
  18. printf("i的地址:%#x\n",&i); 
  19.  
  20. printf("i的值为:%d\n", i); 
  21. // 通过地址修改变量i的值 
  22. *p = 200
  23. printf("i的值为:%d\n", i); 
  24.  
  25. changeByValue(i); 
  26. printf("通过值传递修改i的值:%d\n", i); 
  27. changeByAddress(&i); // int *p = &i; 
  28. printf("通过传地址修改i的值:%d\n",i); 
  29. system("pause"); 

程序运行结果如图:

技术分享

传值和传地址

由程序的运行结果也可以看出,值传递无法修改实参的值,传地址可以修改实参的值。

C语言基础(一)