前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂,风趣幽默",感觉非常有意思,忍不住分享一下给大家。
👉点击跳转到教程

前言:

初识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语言基础入门详解一_android


二、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语言基础入门详解一_android_02


三、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"); 
}

输出到控制台内容如下:

C语言基础入门详解一_c语言_03


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"); 
}

输出到控制台内容如下:

C语言基础入门详解一_android_04


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语言基础入门详解一_C语言入门_05


四、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语言基础入门详解一_c语言_06


五、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()函数控制台输出的结果

C语言基础入门详解一_开发语言_07


执行switch2()函数控制台输出的结果

C语言基础入门详解一_C语言入门_08


七、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");
}

运行结果如下:

C语言基础入门详解一_开发语言_09


注意:

通过被调函数修改主调函数普通变量的值

1、实参必须是普通变量的地址

2、形参必须是指针变量

3、被调函数中通过修改 *形参名的方式修改主调函数相关变量的值。