前些天发现了一个蛮有意思的人工智能学习网站,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语言输出函数详解
#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、被调函数中通过修改 *形参名的方式修改主调函数相关变量的值。