- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章一篇文章带你了解C语言:入门基础由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
闲话少说,先上思维导图.
如图所示,现在还是初识C语言的第一部分,本次只介绍了C语言本身特点,数据类型,常量变量,字符串转义字符注释,选择循环语句,函数,数组.
接下来请和我一起粗略地探讨其中内涵所在.
。
这是C语言的定义:
C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言.
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台.
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。 [1] 目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程.
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同.
其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等.
但总结其特点就是 。
1.底层开发, 。
2.国际标准 ANSI C, 。
3.面向过程 。
#include <stdio.h>//stdio-标准输入输出 standard input & output headfile//int -整型-整数的类型//主函数//main函数是程序的入口//唯一性有且仅有一个int main(){ //库函数-打印函数-输出函数 printf("hello world!"); printf("hello world!"); printf("hello world!"); return 0;}//这种写法明确告诉你,main函数不需要传参int main(void){}//这种写法有用,但不是重点int mian(int argc, char* argv[]){}
。
C语言主要有六种数据类型,分别为字符型char,短整型short,整形int,长整型long,单精度浮点型float以及双精度浮点型double.
这六种分别有自己的字符长度即其所建变量所占的空间,char最小只要1个字节,short占2个,int占4个,long一般是4个,也有可能是8个,反正只要满足long的字节长度大于等于int就可以了。两个浮点型的最为特殊,分别是4和8,显然双精度的精度更高.
int main(){ //如何计算一个类型创建的变量所占空间的大小 //sizeof(); printf("%d", sizeof(char));//1个字节 printf("%d", sizeof(short));//2个字节 printf("%d", sizeof(int));//4个字节 printf("%d", sizeof(long));//4个字节 printf("%d", sizeof(long long));//8个字节 printf("%d", sizeof(float));//4个字节 printf("%d", sizeof(double));//8个字节return 0;}
。
。
显而易见的是,分为两类变量和常量讲述。变量又分两类,一是局部变量,二是全局变量.
顾名思义,局部变量是定义在一对大括号内的,显然我们平时在main函数里创建的都是局部变量,全局变量则为定义在大括号外面的变量。当二者同名时,局部变量优先,当然,这种代码谁写谁SB.
。
在程序中使用scanf函数,若程序为scanf("%d%d");%d%d之间不管有没有空格,输入变量时都要用空格隔开,若二者之间有逗号则逗号隔开.
。
对这二者讨论他们的作用域和生命周期的话,全局变量的作用域为整个工程文件,若想在其他.c文件中使用则需要extern声明一下,生命周期呢,则是整个工程的生命周期,也就是main函数的生命周期。局部变量的作用域为其定义的大括号{ }内,进作用域生命开始,出则结束.
。
//验证局部变量的作用域 int main(){ int b = 100;//主函数任意位置 { int a = 10;//局部变量作用域:局部所在范围 printf("a=%d", a); printf("b=%d", b); } //printf("a=%d", a); printf("b=%d", b); return 0;}//验证全局变量的作用域为整个工程int a = 200;void test(){ printf("test:%d", a);}int main(){ test(); printf("main:%d", a);//全局变量可以任意使用 return 0;}//全局变量在其他源文件的使用//转到test1.c文件查看int g_val = 110;//验证局部变量的生命周期为进作用域到出作用域int main(){ { int a = 100; printf("%d", a); } printf("%d", a);//出作用域即生命周期结束 return 0; }//全局变量的生命周期为整个工程即main函数生命周期int main(){ printf("%d", g_val); return 0;}
。
常量呢,大致分为四种,1字面常量,2const修饰的常变量,3#define定义的标识符常量,4枚举常量.
第一种,字面常量就是随便写出来的一个数,如3.14就是一个字面常量.
第二种,const修饰的常变量,即在创建变量时加上const修饰,如const int a=0;这样变量a就具有了常属性,不可被修改。但值得注意的是,常变量一词,它仍然是个变量,不可用于定义数组.
//const修饰的变量int main(){ //局部变量 int a = 200; //不可被改变的属性,常属性 const int a = 110; a = 100; printf("%d", a); //const修饰的变量不可定义数组 //(常变量) int n = 110; int arr[n] = { 0 };//数组 return 0;}
第三种,#define定义的常量,写法如 #define N 10,这是真真正正的常量,可以用来定义数组。同样也是不可修改的(常量当然不可被修改).
#define PAI 314int main(){ int a = PAI; printf("a=%d", a); //MAX = 300;//#define定义的变量不可被修改 //可用于定义数组 int arr[PAI] = { 0 }; return 0;}
第四种,枚举常量,具体使用方法像enum sex {MALE,FEMALE,SECRET};这样就得到了枚举常量,各自都是有初值的,分别为0,1,2依次类推,当然也可以自己赋值.
//枚举常量 SEX性别举例//可以一一列举的值,性别,三原色enum Sex{ //枚举的可能取值 MALE=3,//赋初值 FEMALE=8, SECRET//向后延一个为9};int main(){ //FEMALE = 99;//ERR 枚举变量值不可修改 enum Sex a=MALE; enum Sex s = FEMALE; printf("%d", MALE); printf("%d", FEMALE); printf("%d", SECRET); return 0;}
。
。
被单引号引起来的,如"w","r"是字符,被双引号引起来的"yyx","abcdef"是字符串。字符串一般以""结尾隐含在字符串的末尾。既然""为字符串结束标志,在计算字符串长度时当然不算作字符串内容.
//字符,字符串int main(){ //"a", " " , "X" - 字符 //"abc" "123" - 字符串 //"abcdef"; //字符串字面值 //① char ch1[] = "abcdef";//初始化字符数组 //a ,b ,c ,d ,e ,f , //%s - 打印字符串 //strlen - 打印字符串长度,(遇则停止,本身不算)是字符串结束标志 printf("%s", ch1); //abcdef printf("%d", strlen(ch1));//6 //② char ch2[] = { "a","b","c","d","e","f" }; //a ,b ,c ,e ,f printf("%s", ch2); //abcdef烫烫烫烫烫abcdef printf("%d", strlen(ch2));//22,找不到 //③ char ch3[] = { "a","b","c","d","e","f","" }; //a ,b ,c ,d ,e ,f , printf("%s", ch3); //abcdef printf("%d", strlen(ch3));//6 return 0;}
。
有防止单引号,双引号,反斜杠被转移的" " " , " " "," " 。警告,蜂鸣的" a " ,退格符" ",进纸符" f ",换行符" ",回车符" ",水平制表符" ",垂直制表位" v ",八进制数字" ddd ",十六进制数字" xdd " .
#include <stdio.h>int main(){ printf("c:code est.c");//c:code est.c printf("c:code est.c");//c:code est.c //单个是转义序列符,但这里又没有c的转义字符,所以系统自动忽略该 //想要出现该,则必须要搭配两个,防止其被转义 return 0;}// ?//三字母词 // ??) --> ] ??( --> [//" " int main(){ printf("%c", "a"); printf("%c", "b"); printf("%c",""");//在"前面加上,以单纯的将其视为字符" printf("%s", """);// " return 0;}//a f v //ddd八进制数字 xdd十六进制数字int main(){ printf("%c", "165"); //打印八进制数字065转化为十进制数字53所代表的字符(ASCII码) printf("%d", "165"); //打印八进制数字065转化为十进制数字53 printf("%c", "x15"); printf("%d", "x15");//21 return 0;}
。
C++的风格 //xxxxx ,这种只能注释一行。C语言的风格 /*xxxxx*/ ,不可嵌套注释.
。
选择语句,实现分支。具体情况为 if ( 条件 ) { 语句 } else ( 条件 ) { 语句 };循环语句,有while循环,do...while循环和for循环.
int main(){ int i = 0; printf("加入比特"); printf("要好好敲代码吗(1/0)?"); scanf("%d", &i); if (i == 1) { printf("好offer"); } else { printf("药丸"); } return 0;}int main(){ int line = 0; printf("加入比特"); while (line<20000) { printf("敲%d了代码",line); line++; } printf("牛逼坏了拿到了好offer"); return 0;}
。
函数主要传参和返回值的类型要对应 。
int ADD(int num1, int num2){ scanf("%d %d", &num1, &num2); int sum = num1 + num2; return sum;}int main(){ int num1 = 0; int num2 = 0; 输入 //scanf("%d %d", &num1, &num2); 相加 //int sum = num1+num2; 输出 //printf("sum=%d", sum); //int output = ADD(num1,num2); //printf("%d", output); printf("%d", ADD(num1, num2)); return 0;}
。
定义是一组相同类型的元素组成的集合,数组的使用是根据下标来的,从0开始数.
int main(){ //数组 - 相同元素的集合 int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; int i = 0; for (i = 0; i < 10; i++) { printf("%3d", arr[i]); } printf(""); for (i = 9; i >= 1; i--) { printf("%3d", arr[i]); } return 0;}
。
本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注我的更多内容! 。
原文链接:https://blog.csdn.net/yourfriendyo/article/details/117677170 。
最后此篇关于一篇文章带你了解C语言:入门基础的文章就讲到这里了,如果你想了解更多关于一篇文章带你了解C语言:入门基础的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
#include using namespace std; class C{ private: int value; public: C(){ value = 0;
这个问题已经有答案了: What is the difference between char a[] = ?string?; and char *p = ?string?;? (8 个回答) 已关闭
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 7 年前。 此帖子已于 8 个月
除了调试之外,是否有任何针对 c、c++ 或 c# 的测试工具,其工作原理类似于将独立函数复制粘贴到某个文本框,然后在其他文本框中输入参数? 最佳答案 也许您会考虑单元测试。我推荐你谷歌测试和谷歌模拟
我想在第二台显示器中移动一个窗口 (HWND)。问题是我尝试了很多方法,例如将分辨率加倍或输入负值,但它永远无法将窗口放在我的第二台显示器上。 关于如何在 C/C++/c# 中执行此操作的任何线索 最
我正在寻找 C/C++/C## 中不同类型 DES 的现有实现。我的运行平台是Windows XP/Vista/7。 我正在尝试编写一个 C# 程序,它将使用 DES 算法进行加密和解密。我需要一些实
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
有没有办法强制将另一个 窗口置于顶部? 不是应用程序的窗口,而是另一个已经在系统上运行的窗口。 (Windows, C/C++/C#) 最佳答案 SetWindowPos(that_window_ha
假设您可以在 C/C++ 或 Csharp 之间做出选择,并且您打算在 Windows 和 Linux 服务器上运行同一服务器的多个实例,那么构建套接字服务器应用程序的最明智选择是什么? 最佳答案 如
你们能告诉我它们之间的区别吗? 顺便问一下,有什么叫C++库或C库的吗? 最佳答案 C++ 标准库 和 C 标准库 是 C++ 和 C 标准定义的库,提供给 C++ 和 C 程序使用。那是那些词的共同
下面的测试代码,我将输出信息放在注释中。我使用的是 gcc 4.8.5 和 Centos 7.2。 #include #include class C { public:
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我的客户将使用名为 annoucement 的结构/类与客户通信。我想我会用 C++ 编写服务器。会有很多不同的类继承annoucement。我的问题是通过网络将这些类发送给客户端 我想也许我应该使用
我在 C# 中有以下函数: public Matrix ConcatDescriptors(IList> descriptors) { int cols = descriptors[0].Co
我有一个项目要编写一个函数来对某些数据执行某些操作。我可以用 C/C++ 编写代码,但我不想与雇主共享该函数的代码。相反,我只想让他有权在他自己的代码中调用该函数。是否可以?我想到了这两种方法 - 在
我使用的是编写糟糕的第 3 方 (C/C++) Api。我从托管代码(C++/CLI)中使用它。有时会出现“访问冲突错误”。这使整个应用程序崩溃。我知道我无法处理这些错误[如果指针访问非法内存位置等,
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
我有一些 C 代码,将使用 P/Invoke 从 C# 调用。我正在尝试为这个 C 函数定义一个 C# 等效项。 SomeData* DoSomething(); struct SomeData {
这个问题已经有答案了: Why are these constructs using pre and post-increment undefined behavior? (14 个回答) 已关闭 6
我是一名优秀的程序员,十分优秀!