c程序
认识第一个C语言程序:
#inlcude <stdio.h>
#include <stdlib.h>
int main()
{
printf("hehe\n");//printf用于在标准输出下打印信息
}
一、在写程序的过程中我们通常需要添加注释,有两种注释规则:
/* */和//
/* */这是c注释风格,可以注释多行代码,但是不支持嵌套。
//是c++注释风格,只能注释一行代码,我们推荐使用//。
mian函数是c程序的入口,在一个程序中只能含有一个main函数。
int main()
{
char s1[] = "hello world";//一串字符用“”括起来
char c = 'a';//单个字符用‘’括起来
printf("%s\n", s1);
printf("%c\n", c);
system("pause");
return 0;
}
二、下面讲解转义字符 的使用:
先来看一段小代码:
int main()
{
printf("(are you ok ??)\n");
system("pause");
return 0;
}
我们的目的是输出(are you ok ??),但是经过编译发现输出的是:(are you ok ]’这是怎么回事呢?这里涉及了三字母词的知识(vs中不支持三字母词)。
所以为了输出我们想要的字符形式,我们引入了转义字符的概念
int main()
{
printf("(are you ok \?\?)\n");
system("pause");
return 0;
}
这样输出的就是(are you ok??)。
介绍一些常用转义字符:
需要注意的是\ddd,和\xddd,下面就一个小代码进行分析:
int main()
{
printf("\130\n");//X
printf("\x050\n");//P
system("pause");
return 0;
}
\ddd是三位八进制数据,需要将其化为十进制,再转换为相应的acsii码值。
\xddd是三位十六进制数据,需要将其化为十进制,再转换为相应的acsii码值。
int main()
{
printf("%d\n", strlen("hello"));//5
printf("%d\n", strlen("c:\test\45\test.c"));//13
system("pause");
return 0;
}
由之前介绍的,我们很容易就能知道以上这个程序的输出结果。
三、数据类型
strlen:字符串的长度,遇到\0结束。
sizeof:字符串占内存的大小,包括\0所占的空间。
*有一个小知识点:\0和字符0是不一样的,\0一串字符串的结束标志,它的ascii码值为0,而字符0的ascii码值为48。
四、变量
一个变量的值是会发生变化的,一个简单的小程序:
int main()
{
int num = 0;
num = 10;
printf("%d", num);
system("pause");
return 0;
}
num的值可以被改变。
C语言中,当一个变量被const修饰时,它依然是变量,但是它具有了常属性,不能轻易被改变。
int main()
{
const int num = 0;
num = 10;
system("pause");
return 0;
}
写出这样的代码会编译出错。
int main()
{
volatile const int num = 0;
int *p = #
*p = 10;
printf("%d\n", num);//10
system("pause");
return 0;
}
当我们使用volatile修饰被const修饰的变量的时候,我们就可以改变被const修饰的变量的值。原因是当一个变量被const修饰时,它很有可能被存储在寄存器中,这样可以提高访问效率。我们改变的是数据在内存中的值,就算改变了,寄存器是改变不了变化的,所以结果就不会改变。但是加上volatile就可以改变这个状况。
由此,我们可以知道volatile的作用:将数据存放在内存中,保证内存的可见性(可以用来改变被const修饰的变量的值)。
在c语言中被const修饰的变量叫做常变量,但还是变量。
在c++中被const修饰的变量的就是常量。
所以一下C语言程序是错误的
int main()
{
const int size = 10;
int arr[10];
int arr[size];//错误写法,被const修饰的变量还是变量(c语言中)
}
变量的分类:局部变量和全局变量
局部变量:变量出现在代码块内部称为局部变量,生命周期:进入局部范围开始生命周期,出了这个范围,声明周期结束。作用域:代码块范围内。
全局变量:出现在所有代码块之外称为全局变量。生命周期:是整个工程的生命周期。作用域:在整个 工程之内。
局部变量
num就是一个局部变量
void test()
{
int num = 0;//局部变量
}
int main()
{
int num = 10;
system("pause");
return 0;
}
全局变量
num是全局变量
int num = 0;
int main()
{
int num = 10;
system("pause");
return 0;
}
看这样一个代码:
void test()
{
int num = 0;
num++;
printf("%d\n", num);
}
int main()
{
int i = 0;
for (i = 0; i < 10; i++)
{
test();
}
system("pause");
return 0;
}
本以为输出的会是12345678910,但是程序实际输出的是1111111111,这是因为,这是局部变量只在被定义的代码块有效,出了这块代码,它就会被销毁,所以调用这个函数后,一共循环10次,每次num都会被销毁,会被重新赋值。
但是num被static修饰,情况又会不一样了:
void test()
{
static int num = 0;
num++;
printf("%d\n", num);
}
int main()
{
int i = 0;
for (i = 0; i < 10; i++)
{
test();
}
system("pause");
return 0;
}
执行这段代码,结果是1 2 3 4 5 6 7 8 9 10.由此我们可以知道,被static修饰的局部变量创建后就不会被销毁,并且只会被初始化一次。这个变量会被改变生命周期,使得生命周期扩展到整个程序结束。但是在声明外部变量中extern int num;用static int num,即static修饰外部变量只能在自己的源文件总使用,其他文件使用extern int num;会发生错误。
相关阅读
一、安装 electron-packagerPS:安装之前,先复制一份package.json文件到./app目录下,然后改下./app目录下package.json里 “main”:
产品越小,越经不起侵权的威胁,也越容易被快速复制。至少在小程序这块,大体如此。在湖南长沙的一间小茶馆里,小程序创业者王磊说起一年
本文要推荐的[ToolFk]是一款程序员经常使用的线上免费测试工具箱,ToolFk 特色是专注于程序员日常的开发工具,不用安装任何软件,只要
14001错误:由于应用程序配置不正确,应用程序未能启动:O
5bce955cf12af3417f055dadc0212920“由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题。”此md5为Q
一、判断题 String字符串在创建后可以被修改。 ( 0 ) 引用一个类的属性或调用其方法,必须以这个类的对象为前缀。 ( 0 final