注:此篇文章仅限初步了解,本小白后续会持续进行详解。
目录:
我们通过加法来理解它的使用。
#include<stdio.h>
int main()
{
int num1 = 0;
int num2 = 0;
//给num1和num2赋予两个新的值
scanf("%d %d", &num1, &num2);
//求和
int sum = num1 + num2;
printf("sum = %d\n", sum);
return 0;
}
📙一些简单解释:
1.scanf和printf是库函数,即c语言的编译器提供的现有并可以直接使用的函数函数,在使用这两个库函数时,需要包含头文件<stdio.h>
2.scanf函数的作用:输入数据——将数据从键盘读取到内存中。
printf函数的作用:输出数据——数据从内存输出到屏幕上。
3.
作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域.
📗简单的来讲,变量哪里可以用,哪里就是它的作用域。
局部变量作用域示意图:

全局变量作用域:
🌟在任意地方都可以使用!!!
通过两个代码来说明这个问题:
1.一个文件内:
#include<stdio.h>
int a = 10;
//函数测试
void test()
{
printf("第三个:%d\n", a);
}
int main()
{
printf("第一个:%d\n", a);
{
printf("第二个: %d\n", a);
}
test();
return 0;
}
❗️结果如下:

我们可以看到,在一个文件内,全局变量在哪里都可以使用。
int num = 10;
第二个文件:
#include<stdio.h>
//声名外部符号。
extern int num;
int main()
{
printf("%d\n", num);
return 0;
}
❗️结果如下:

📙通过这两个例子,我们可以看出,全局变量的作用域是整个工程。
正是因为可以在整个工程使用,所以会变得不安全,要尽可能避免使用。
生命周期:变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段。
局部变量的生命周期示意:

全局变量的生命周期:
main函数的第一行开始运行直到结束,全局变量都可以使用。
📙所以:全局变量的生命周期就是整个程序的生命周期。
c语言中的常量有以下几种:
📘 字面常量:
例如: 整数 1; 小数 1.5; 字符 ’a’ ; 字符串 “abcde”
📘const 修饰的常变量:
例:
#include<stdio.h>
int main()
{
int num = 10;
printf("%d\n", num);
num = 100;
printf("%d\n", num);
return 0;
}
❗️结果:

现在我们将num变量前面加上const 。
例:
#include<stdio.h>
int main()
{
const int num = 10;
printf("%d\n", num);
num = 100;
printf("%d\n", num);
return 0;
}
❗️结果:无法编译运行。

❓ 原因是什么呢❓
🌟const 修饰的变量使得变量具有了常属性——不可被改变! 但是,这个本质上还是 变量 。
📘 #define 定义的标识符常量
例:

🌟在预编译阶段,其实就会将 num 直接替换为10,ch替换为‘a’,num1替换为1.0f
📘枚举常量
枚举就是 一个一个列举 。
例如 : 列举性别,列举血型等等。 所以 c 语言引入关键字enum。
enum SEX
{
//一一列举性别的可能
MAX,
FEMALE
};
此处细节会在后期详细解释!
字符,简单的来说,键盘上可以敲出来的任何符号都是字符。而字符串,其实就是一串字符。例如:”Hello World“ 。
这种由双引号(Double Quote)引起来的一串字符称为字符串字面值(String Literal),或者简称字符串。
注意:字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串内容。
例:
int main()
{
char arr[] = "abcdef";
return 0;
}
监控一下数组,可以发现有一个\0.

其实这个\0是字符串的结束标志。
用代码解释这个标志:
#include<stdio.h>
int main()
{
char arr1[] = { 'a','b','c','d' };
char arr2[] = "abcd";
printf("%s\n", arr1);
printf("%s\n", arr2);
return 0;
}
❗️结果如下:

❓对于这种现象如何产生的呢?

而且,在使用strlen(一个库函数,用来计算字符串长度,从给定的地址计数,直到遇到\0才停止)计算字符串长度时,对于上述arr1 的情况,由于无法确定\0的具体位值,所以结果会是随机值。
| 转义字符 | 释义 |
|---|---|
| \ ? | 在书写连续多个问号时使用,防止他们被解析成三字母词 |
| \ ’ | 用于表示字符常量’ |
| \“ | 用于表示一个字符串内部的双引号 |
| \ \ | 用于表示一个反斜杠,防止它被解释为一个转义序列符。 |
| \a | 警告字符,蜂鸣 |
| \b | 退格符 |
| \f | 进纸符 |
| \n | 换行 |
| \t | 水平制表符 |
| \v | 垂直制表符 |
| \ddd | d d d表示1~3个八进制的数字。 如: \130 表示字符X |
| \xdd | d d表示2个十六进制数字。 如: \x30 表示字符0 |
一些简单的解释:计算机可以识别二进制,由于字符的不方便储存,所以对字符进行了编号,例如‘a’ —— 97 等等,这种编码就是ASCII 编码,编号就是ASCLL码值。
例如:printf("%c", '\130');
此时130是八进制,转换为十进制是88,对应ASCLL表,可见结果为 X。
// 注释
注: 以//开头的注释风格是属于c++的,在c99标准之后,也进行了引入。
/* int a = 0; */
注:这种形式(/* */)是c语言的注释风格。
c语言的注释风格是不可以嵌套的,但是c++的注释风格可以。
之后的内容,本小白会持续更新,刚开始写博客,有不足的地方还请各位大佬多多指正,非常感谢!
我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚
几个月前,我读了一篇关于rubygem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:
?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------
嗨~大家好,这里是可莉!今天给大家带来的是7个C语言的经典基础代码~那一起往下看下去把【程序一】打印100到200之间的素数#includeintmain(){ inti; for(i=100;i 【程序二】输出乘法口诀表#includeintmain(){inti;for(i=1;i 【程序三】判断1000年---2000年之间的闰年#includeintmain(){intyear;for(year=1000;year 【程序四】给定两个整形变量的值,将两个值的内容进行交换。这里提供两种方法来进行交换,第一种为创建临时变量来进行交换,第二种是不创建临时变量而直接进行交换。1.创建临时变量来
我经常将预配置的lambda插入可枚举的方法中,例如“map”、“select”等。但是“注入(inject)”的行为似乎有所不同。例如与mult4=lambda{|item|item*4}然后(5..10).map&mult4给我[20,24,28,32,36,40]但是,如果我制作一个2参数lambda用于像这样的注入(inject),multL=lambda{|product,n|product*n}我想说(5..10).inject(2)&multL因为“inject”有一个可选的单个初始值参数,但这给了我......irb(main):027:0>(5..10).inject
是否有self验证的问题列表。看着那个,我可以确定我知道。我应该复习一下。在学习的过程中,我列了一个这样的list,但它只包含我在某处听说过的项目。我需要一段时间才能找到新的东西。 最佳答案 以下是针对ruby和Rails的一些测试列表。证书名称:RubyonRails谁提供:oDeskIncorporation认证费用:免费网站:https://www.odesk.com/tests/985?pos=0证书名称:RubyonRails提供者:Techgig.com(TimesBusinessSolutionsLimited(T
我想覆盖store_accessor的getter。可以查到here.代码在这里:#Fileactiverecord/lib/active_record/store.rb,line74defstore_accessor(store_attribute,*keys)keys=keys.flatten_store_accessors_module.module_evaldokeys.eachdo|key|define_method("#{key}=")do|value|write_store_attribute(store_attribute,key,value)enddefine_met
关闭。这个问题是off-topic.它目前不接受答案。想改进这个问题吗?Updatethequestion所以它是on-topic用于堆栈溢出。关闭11年前。Improvethisquestion我不经常使用ruby-通常它加起来相当于每两个月或更长时间编写一次脚本。我的大部分编程都是使用C++进行的,这与ruby有很大不同。由于我与ruby之间的差距如此之大,我总是忘记语言的基本方面(比如解析文本文件和其他简单的东西)。我想每天练习一些基本的东西,我想知道是否有一些我可以订阅的网站,并且会向我发送当天的Ruby问题或类似的东西。有人知道这样的站点/Internet服务吗?
如果特定语言环境中缺少翻译,如何配置i18n以使用en语言环境翻译?当前已插入翻译缺失消息。我正在使用RoR3.1。 最佳答案 找到相似的question这里是答案:#application.rb#railswillfallbacktoconfig.i18n.default_localetranslationconfig.i18n.fallbacks=true#railswillfallbacktoen,nomatterwhatissetasconfig.i18n.default_localeconfig.i18n.fallback
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我最近开始学习Ruby,这是我的第一门编程语言。我对语法感到满意,并且我已经完成了许多只教授相同基础知识的教程。我已经写了一些小程序(包括我自己的数组排序方法,在有人告诉我谷歌“冒泡排序”之前我认为它非常聪明),但我觉得我需要尝试更大更难的东西来理解更多关于Ruby.关于如何执行此操作的任何想法?