前言:
初识C语言
//#include 相当于java的import,stdio全称:standard input$output 标准的输入输出 .h头文件的后缀,包含一些函数 #include <stdio.h> //导入的标准的C语言函数库 #include <stdlib.h> main() //相当于Java的public static void main(String[] args) {//函数的开始 printf("hello,world! \n"); //printf(内容)输出函数,相当于Java的System.out.println("hello,world!"); \n是回车换行 system("calc"); //调起计算器 system("mspaint"); //调起画板 system("services.msc");//调起服务 system("java Hello"); //调用字节码 system("pause"); //让docs命令行执行pause命令,作用是控制台停留。 }//函数的结束
一、C语言基本数据类型详解
#include<stdio.h> #include<stdlib.h> /** C语言基本类型 char,int,float,double,long,short,signed,unsigned,void 计算机类型的长度:sizeof("类型") 返回int类型的长度 占位符:%d printf("内容"); Java数据类型和C语言基本数据类型的区别: 1.Java中char类型的长度为2个字节,C语言中的长度为1个字节 2.Java中long类型的长度为8个字节,C语言中的长度为4个字节 C99标准:long类型的规定,不小于整形。 3.C语言中没有byte 4.C语言中没有boolean类型,0表示false,非0表示true 5.signed:有符号:-128~127 =-2^7~2^7-1 6.unsiged:无符号:0~255 =0~2^8-1 7.void:无类型,代表任意类型 **/ main() { printf("int类型的长度为:%d\n",sizeof(int)); printf("char类型的长度为:%d\n",sizeof(char)); printf("float类型的长度为:%d\n",sizeof(float)); printf("double类型的长度为:%d\n",sizeof(double)); printf("long类型的长度为:%d\n",sizeof(long)); printf("short类型的长度为:%d\n",sizeof(short)); printf("signed类型的长度为:%d\n",sizeof(signed)); printf("unsigned类型的长度为:%d\n",sizeof(unsigned)); printf("void类型的长度为:%d\n",sizeof(void)); if(-1){ printf("true\n"); } else{ printf("false\n"); } system("pause"); }
输出到控制台内容如下:
二、C语言输出函数详解
#include<stdio.h> #include<stdlib.h> /** 输出函数 printf("你要输出的内容"); %d - int %ld - long int %c - char %f - float %u - 无符号数 %hd - 短整型 %lf - double %x - 十六进制输出int,或者long int 或者short int %o - 八进制输出 %s - 字符串 printf("你要输出的内容对应的占位符"); 在C语言中,默认保留小数点后6位 要想保留对应的位数,就需要在百分号后边加上,.数字 十进制:12345678 二进制 101111000110000101001110 0110000101001110 不同的类型,要用不同的占位符去输出,否则精度丢失 */ main(){ char c = 'A'; int i=12345678; long l=123456789; float f =3.1415; double d = 3.1415926535; printf("c==%c\n",c); printf("i==%d\n",i); printf("l==%ld\n",l); printf("f==%.3f\n",f); printf("d==%.9lf\n",d); printf("i==%hd\n",i); //C语言的数组的括号不能写在左边 char cArray[]={'A','B'}; printf("cArray的内存地址==%#x\n",&cArray); char* text="I love you"; printf("cArray的内容==%s\n",text); system("pause"); }
输出到控制台内容如下:
三、C语言输入函数详解
1.输入函数.c文件
#include<stdio.h> #include<stdlib.h> /** 输入函数 scanf("占位符",内存地址) %d - int %ld - long int %c - char %f - float %u - 无符号数 %hd - 短整数 %lf - double %x - 十六进制输出int 或者long int 或者short int %o - 八进制输出 %s - 字符串 System.in(); */ main(){ int i; printf("请输入的数字:\n"); scanf("%d",&i); printf("您输入的数字是:%d\n",i); //输入 在C语言中没有String类型,但是可以用char数组来表示 char cArray[]={'H','E','L','L','O'}; int j; for(j=0;j<5;j++){ printf("cArray[%d]==%c\n",j,cArray[j]); } printf("cArray== %s\n",cArray); system("pause"); }
输出到控制台内容如下:
2.输入函数2.c文件
#include<stdio.h> #include<stdlib.h> /** 输入函数 scanf("占位符",内存地址) %d - int %ld - long int %c - char %f - float %u - 无符号数 %hd - 短整数 %lf - double %x - 十六进制输出int 或者long int 或者short int %o - 八进制输出 %s - 字符串 System.in(); */ main(){ char cArray[5]; printf("请输入HELLO: \n"); scanf("%s",&cArray); int j; for(j=0;j<5;j++){ printf("cArray[%d]==%c\n",j,cArray[j]); } printf("cArray== %s\n",cArray); system("pause"); }
输出到控制台内容如下:
3.输入函数3.c文件
#include<stdio.h> #include<stdlib.h> /** 输入函数 scanf("占位符",内存地址) %d - int %ld - long int %c - char %f - float %u - 无符号数 %hd - 短整数 %lf - double %x - 十六进制输出int 或者long int 或者short int %o - 八进制输出 %s - 字符串 System.in(); */ main(){ char cArray[]={'a','b','c','d','e','\0','a','b'}; //\0代表结束 //数组是一块连续的内存空间 printf("cArray==%s\n",cArray); //char类型的指针 char* text="I love you!!"; printf("text==%s\n",text); system("pause"); }
输出到控制台内容如下:
四、C语言指针的初步认识
#include<stdio.h> #include<stdlib.h> /** 指针就是内存地址 内存地址就是指针 */ main(){ //定义一个int类型的变量i,并且赋值为10 int i=10; //定义一个int类型的一级指针变量p int* p; //把i对应的地址赋值给p变量 p = &i; //指针取值*p:把p变量对应的地址的值取出来 printf("*p==%d\n",*p); system("pause"); }
输出到控制台内容如下:
五、C语言指针的深入理解
#include<stdio.h> #include<stdlib.h> /** 指针就是内存地址 内存地址就是指针 */ main(){ int i = 100; int* p = &i; //第一个实验:如果修改i值,P值有变化吗? // printf("修改i值前,p的值是:%#x\n",p); //修改i值前,p的值是:0x62fe14 // i=200; // printf("修改i值后,p的值是:%#x\n",p);//修改i值后,p的值是:0x62fe14 //第二个实验:如果修改p值,i值有变化吗? // printf("修改i值前,i的值是:%d\n",i); //修改i值前,i的值是:100 // int j = 200; // p=&j; // printf("修改i值后,i的值是:%d\n",i); //修改i值后,i的值是:100 //第三个实验:如果修改i值,*P值有变化吗? // printf("修改i值前,*p的值是:%d\n",*p); //修改i值前,*p的值是:100 // i=200; // printf("修改i值后,*p的值是:%d\n",*p); //修改i值后,*p的值是:200 //第四个实验:如果修改p值,i值有变化吗? printf("修改*p值前,i的值是:%d\n",i); //修改*p值前,i的值是:100 *p=200; printf("修改*p值后,i的值是:%d\n",i);//修改*p值后,i的值是:200 system("pause"); }
六、C语言中互换两个数字
#include<stdio.h> #include<stdlib.h> /** 互换两个数 */ void switch1(int a,int b){ //传值无法改变值 int temp = a; a = b; b = temp; printf("sitch中 a地址==%#x\n",&a); printf("sitch中 b地址==%#x\n",&b); } void switch2(int* a,int* b){ //传地址,可以改变值 int temp = *a; *a = *b; *b = temp; printf("sitch2中 a地址==%#x\n",a); printf("sitch2中 b地址==%#x\n",b); } main(){ int a = 100; int b = 200; printf("main中 a地址==%#x\n",&a); printf("main中 b地址==%#x\n",&b); printf("a==%d\n",a); printf("b==%d\n",b); switch1(a,b); // switch2(&a,&b); printf("a==%d\n",a); printf("b==%d\n",b); system("pause"); }
执行switch1()函数控制台输出的结果
执行switch2()函数控制台输出的结果
七、C语言中函数返回多个值
/** 返回多个值 */ void close(int* a,int* b){ *a=0; *b=0; } main(){ //一键关闭GPS和wifi //1代表的是开,0代表的是关闭 int a = 1; int b = 1; close(&a,&b); printf("a==%d\n",a); printf("b==%d\n",b); system("pause"); }
运行结果如下:
注意:
通过被调函数修改主调函数普通变量的值
1、实参必须是普通变量的地址
2、形参必须是指针变量
3、被调函数中通过修改 *形参名的方式修改主调函数相关变量的值。