必威体育Betway必威体育官网
当前位置:首页 > IT技术

第一个c程序

时间:2019-06-22 12:44:15来源:IT技术作者:seo实验室小编阅读:77次「手机版」
 

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 = &num;
     *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-packager打包exe程序

一、安装 electron-packagerPS:安装之前,先复制一份package.json文件到./app目录下,然后改下./app目录下package.json里 “main”:

小程序侵权“生死局”

产品越小,越经不起侵权的威胁,也越容易被快速复制。至少在小程序这块,大体如此。在湖南长沙的一间小茶馆里,小程序创业者王磊说起一年

在线数据库设计工具-toolfk程序员在线工具网

本文要推荐的[ToolFk]是一款程序员经常使用的线上免费测试工具箱,ToolFk 特色是专注于程序员日常的开发工具,不用安装任何软件,只要

14001错误:由于应用程序配置不正确,应用程序未能启动:O

5bce955cf12af3417f055dadc0212920“由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题。”此md5为Q

JAVA程序设计练习题集答案

一、判断题 String字符串在创建后可以被修改。 ( 0 ) 引用一个类的属性或调用其方法,必须以这个类的对象为前缀。 ( 0 final

分享到:

栏目导航

推荐阅读

热门阅读