C语言基础入门详解一

前些天发现了一个蛮有意思的人工智能学习网站,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类型的长度占位符:%dprintf("内容"); Java数据类型和C语言基本数据类型的区别:1.Java中char类型的长度为2个字节,C语言中的长度为1个字节 2.Java中long类型的长度为8个字节,C语言中的长度为4个字节C99标准:long类型的规定,不小于整形。3.C语言中没有byte4.C语言中没有boolean类型,0表示false,非0表示true 5.signed:有符号:-128~127 =-2^7~2^7-1 6.unsiged:无符号:0~255  =0~2^8-17.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 
二进制 1011110001100001010011100110000101001110不同的类型,要用不同的占位符去输出,否则精度丢失 
*/ 
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的值是:200system("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、被调函数中通过修改 *形参名的方式修改主调函数相关变量的值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/13340.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PostMan+Jmeter+QTP工具介绍及安装

目录 一、PostMan介绍​编辑 二、下载安装 三、Postman与Jmeter的区别 一、开发语言区别&#xff1a; 二、使用范围区别&#xff1a; 三、使用区别&#xff1a; 四、Jmeter安装 附一个详细的Jmeter按照新手使用教程&#xff0c;感谢作者&#xff0c;亲测有效。 五、Jme…

微信读书:长期投资(阅读摘录)

微信读书&#xff1a;长期投资&#xff08;阅读摘录&#xff09; 所有投资高手的时间精力都投向了这三大块&#xff1a;行动、思考、读书。 我们把耐心发挥到了极致&#xff0c;这正是价值投资的关键特征之一。 通常在牛市中想要跑赢大盘&#xff0c;难度非常大。 实际上&am…

深度剖析C++ 异常机制

传统排错 我们早在 C 程序里面传统的错误处理手段有&#xff1a; 终止程序&#xff0c;如 assert&#xff1b;缺陷是用户难以接受&#xff0c;说白了就是一种及其粗暴的手法&#xff0c;比如发生内存错误&#xff0c;除0错误时就会终止程序。 返回错误码。缺陷是需要我们自己…

【Docker consul的容器服务更新与发现】

文章目录 一、Consul 的简介&#xff08;1&#xff09;什么是服务注册与发现&#xff08;2&#xff09;什么是consul 二、consul 部署1、consul服务器1. 建立 Consul 服务2. 查看集群信息3. 通过 http api 获取集群信息 2、registrator服务器1. 安装 Gliderlabs/Registrator2. …

Generative Diffusion Prior for Unified Image Restoration and Enhancement 论文阅读笔记

这是CVPR2023的一篇用diffusion先验做图像修复和图像增强的论文 之前有一篇工作做了diffusion先验&#xff08;Bahjat Kawar, Michael Elad, Stefano Ermon, and Jiaming Song, “Denoising diffusion restoration models,” arXiv preprint arXiv:2201.11793, 2022. 2, 4, 6,…

linux 查看网卡,网络情况

1&#xff0c;使用nload命令查看 #yum -y install nload 2&#xff0c; 查看eth0网卡网络情况 #nload eth0 Incoming也就是进入网卡的流量&#xff0c;Outgoing&#xff0c;也就是从这块网卡出去的流量&#xff0c;每一部分都有下面几个。 – Curr&#xff1a;当前流量 – Avg…

数据库—数据库备份(三十四)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、概述 二、数据备份的重要性 三、造成数据丢失的原因 四、备份类型 4.1物理与逻辑角度 4.2数据库备份策略角度 五、常见的备份方法 5.1 物理备份 5.2 使用专用备…

C#再windowForm窗体中绘画扇形并给其填充颜色

C#再windowForm窗体中绘画扇形并给其填充颜色 Graphics graphics this.CreateGraphics();graphics.SmoothingMode SmoothingMode.AntiAlias;int width this.Width;int height this.Height;h this.Height;w this.Width;Rectangle rct new Rectangle(0 - h / 6, 0 - h / 6…

【Ansible】自动化部署工具-----Ansible

自动化部署工具-Ansible 1.Ansible概述2.ansible环境安装部署2.1 command模块2.2 shell模块2.3 cron模块2.4 user模块2.5 group模块2.6 copy模块2.7 file模块2.8 hostname模块2.9 ping模块2.10 yum模块2.11 service/systemd模块2.12 script模块2.13 mount模块2.14 archive模块2…

PostgreSQL中如何配置Huge page的数量

在了解如在PG中如何配置大页之前&#xff0c;我们先要对大页进行一定的了解&#xff0c;为什么要配置大页&#xff0c;配置大页的好处有哪些。 我们日常的操作系统中&#xff0c;程序不直接使用内存&#xff0c;而是使用虚拟内存地址来处理内存分配&#xff0c;避免计算的复杂…

【Docker】初识Docker以及Docker安装与阿里云镜像配置

目录 一、初识Docker 二、安装Docker 三、Docker架构 四、配置Docker镜像加速器 一、初识Docker Docker是一个开源的应用容器引擎&#xff0c;诞生于2013年&#xff0c;基于Go语言实现&#xff0c;dotCloud公司出品&#xff0c;Docker开源让开发者打包他们的应用以及依赖包到…

使用frp中的xtcp映射穿透指定服务实现不依赖公网ip网速的内网穿透p2p

使用frp中的xtcp映射穿透指定服务实现不依赖公网ip网速的内网穿透p2p 管理员Ubuntu配置公网服务端frps配置service自启(可选) 配置内网服务端frpc配置service自启(可选) 使用者配置service自启(可选) 效果 通过frp实现内网client访问另外一个内网服务器 管理员 1&#xff09;…

vmware磁盘组使用率100%处理

今天在外办事时&#xff0c;有客户发过来一个截图&#xff0c;问vmware 磁盘组空间使用率100%咋办&#xff1f;如下图&#xff1a; 直接回复&#xff1a; 1、首先删除iso文件等 2、若不存在ISO文件等&#xff0c;找个最不重要的虚拟机直接删除&#xff0c;删除后稍等就会释放…

订单30分钟未支付自动取消怎么实现?

目录 了解需求方案 1&#xff1a;数据库轮询方案 2&#xff1a;JDK 的延迟队列方案 3&#xff1a;时间轮算法方案 4&#xff1a;redis 缓存方案 5&#xff1a;使用消息队列 了解需求 在开发中&#xff0c;往往会遇到一些关于延时任务的需求。最全面的Java面试网站 例如 生…

ESP32(MicroPython) 四足机器人(一)

最近决定研究一下四足机器人&#xff0c;但市面上的产品&#xff0c;要么性价比低&#xff0c;要么性能达不到要求。本人就另外买了零件&#xff0c;安装到之前的一个麦克纳姆轮底盘的底板上。&#xff08;轮子作为装饰&#xff0c;使用铜柱固定&#xff09; 舵机使用MG996R&a…

使用TensorFlow训练深度学习模型实战(下)

大家好&#xff0c;本文接TensorFlow训练深度学习模型的上半部分继续进行讲述&#xff0c;下面将介绍有关定义深度学习模型、训练模型和评估模型的内容。 定义深度学习模型 数据准备完成后&#xff0c;下一步是使用TensorFlow搭建神经网络模型&#xff0c;搭建模型有两个选项…

x86架构ubuntu22用docker部署zsnes

0. 环境 x86 ubuntu22 1. 安装docker $ sudo apt remove docker docker-engine docker $ sudo apt update $ sudo apt install -y apt-transport-https ca-certificates curl software-properties-common$ curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg …

JDK17 中的新特性初步了解

1. Switch 语句的增强 jdk12 &#xff0c;switch语句不用写break了&#xff0c;直接写箭头和对应的值。 jdk 17中&#xff0c; 加了一个逗号&#xff0c;用于匹配多对一。 如果要在每个case里写逻辑&#xff0c;可以写在花括号里。 在返回值的前面加上yield的关键字。 也可以对…

多线程案例 | 单例模式、阻塞队列、定时器、线程池

多线程案例 1、案例一&#xff1a;线程安全的单例模式 单例模式 单例模式是设计模式的一种 什么是设计模式&#xff1f; 设计模式好比象棋中的 “棋谱”&#xff0c;红方当头炮&#xff0c;黑方马来跳&#xff0c;针对红方的一些走法&#xff0c;黑方应招的时候有一些固定的…

ScheduledThreadPoolExecutor 及 ThreadPoolExecutor的基本使用及说明

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、人工智能等&#xff0c;希望大家多多支持。 目录 一、导读二、概览2.1 为什么不推荐使用Executors去创建线程池 三、…