后!
1.第一个C程序:HelloWorld.c
首先我这里是使用这个软件编写的:下载地址:文章末尾
安装过程一直next就好了
安装后在你的代码目录创建一个HelloWorld.c,代码目录可以随意,然后双击打开HelloWorld.c就可以默认进入我们下载的c开发软件中,如图:
其中图中标记为我们java中常用的编译和运行
下面就可以开始我们c语言的第一个helloWorld,通常说从helloWorld开始可以快速成为大神:
#include // java import xxx.xx.pack 引用函数的声明 #include
main() // 程序的入口函数
{
//代码文件目录是本级目录则会执行成功,否则会找不到该类
printf("Hello world ! "); // 控制台打印一个hello world
//如果不是本级目录必须先指定目录地址,才能执行成功
system("java -classpath c:\ HelloWorld");
system("pause"); // 调用windows下系统的命令 让程序暂停执行 方便观察程序的执行结果
}
代码中我们首先可以看到
1、 这个东西拿java来说就是我们通常的包名
2、main函数是主入口,和java一样
3、c语言中必须使用system("pause");使命令行暂停,方便观察程序的执行结果,否则结果会在你眼中一闪而过
2.C语言的基本类型与JAVA基本类型对比:
上一节中我们开始我们的第一个helloWorld,下面我们讲学习c中的数据类型:
// java数据类型 和长度int 4个字节 double 8个字节 float 4个字节 long 8个字节
// short 2个字节 boolean 1个字节 char 2个字节 byte 1个字节
// char, int, float, double, signed, unsigned, long, short and void
// c语言中 数据类型比java少一些 在c语言中没有 boolean类型的数据 int 1 代表真 0 代表假
// c 语言中没有String类型的数据 java中表示一个字符串 String , c语言中表示字符串 通过char类型的数组来表示字符串
// c 语言没有byte类型 所有用char的类型表示byte类型
#include #include
// sizeof(); c语言的一个函数 可以把 某种数据类型的长度获取出来 int
main()
{ // %d 类似sql语句的? 占位符
printf("char的长度为%d ", sizeof(char));//1
printf("int的长度为%d ", sizeof(int));//4
printf("float的长度为%d ", sizeof(float));//4
printf("double的长度为%d ", sizeof(double));//8
printf("long的长度为%d ", sizeof(long));//在不同的情况下可能会有不同的大小,但是long的长度一定比int大 4
printf("short的长度为%d ", sizeof(short));// 2
//signed, unsigned, 数据类型的修饰符
// signed int ; 代表的是有符号的int的数据
// unsigned int ; 无符号的int数据
printf("signed int的长度为%d ", sizeof( signed int));//4
printf("unsigned int的长度为%d ", sizeof( unsigned int));//4
// 符号的修饰符 只能修饰 整数类型的数据 long int
// 不能修饰 浮点型的数据 float double
// printf("signed float的长度为%d ", sizeof( signed float));
system("pause"); // 调用windows下系统的命令 让程序暂停执行 方便观察程序的执行结果
}
从上面我们可以知道,c语言有以下几种数据类型:
char, int, float, double, long, short
使用char表示java的byte类型数据
使用char数据去表示java中String类型的数据
c的两种修饰符 signed, unsigned,
3.C语言中的输入输出函数:
上一节我们了解c语言的基本数据类型,下面我们看看c的输入输出函数:
/*%d - int
%ld – long int
%c - char
%f - float
%lf – double
%x – 十六进制输出 int 或者long int 或者short int
%o - 八进制输出
%s – 字符串
Int len;
Scanf("%d",&len);*/#include // java import xxx.xx.pack 引用函数的声明 #include
main() // 程序的入口函数
{ int i = 3;
float f = 3.1415;
double d = 6.2815;
char c = 'A'; //通过单引号定义字符
short s = 2;
//输出的时候占位符和数据类型必须一一对应,否则得不到正确的结果
printf("int i=%d ",i);
printf("float f=%f ",f);
printf("char c=%c ",c);
printf("double d=%lf ",d);
printf("short s=%d ",s);
/*char arr[20] ; //定义一个长度为20的数组
//java中是System.in
scanf("%s",arr); // 从键盘接受一个字符串,放在c数组里面
//java中是System.out
printf("s =%s ",arr);
*/
int j ;
scanf("%d", &j);//&代表的是取地址
//从控制台得到j地址所代表的址输出
printf("j=%d ",j);
system("pause"); // 调用windows下系统的命令 让程序暂停执行 方便观察程序的执行结果
}
从代码中我们知道c语言的 输入:scanf();函数 根据地址去输入&j 输出:printf();函数
4.指针入门:
上一节我们学到了输入输出,下面我们将学习一个新名词指针 首先java中是没有指针这个名词的,
指针是什么? 指针就是一个地址 地址代表的就是一块内存空间 指针变量是什么? 用来存放指针
从上面我们就可以知道java中的内存控件就是c语言中的指针,下面我们看下代码:
#include #include
main()
{
int i =5;// 定义一个int 类型的变量i 值 =5
//%#X表示16进制的地址占位符
printf("i的地址 %#X ",&i);
//获取i的地址,&i就是一个指针
// &i;
//定义一个指针变量,数据类型*
int* p ; // 指针变量 定义一个int* 类型的变量p
//其他两种表示方式:int *p, int * p;
p = &i; // 就是把i的指针赋给指针变量p ,现在指针变量p里面存放的内容(数据) 就是i的地址
printf("p里面的内容为(i的地址) %#X ",p);
//*号 操作符
// *号的几种含义
//1 . *号放在某种数据类型的后面,代表就是这种数据类型的指针 int* float*
//2 . *号 代表一个乘法符号 3*5 = 15;
//3 . *号放在一个指针变量的前面 -> 代表取这个指针变量所存放的地址里面对应的数据
printf("i=%d ",i);
printf("*p的值%d ",*p);
// 改变p的值 会不会影响i的值?
//p = NULL;
// printf("i=%d ",i);//5
// 改变i的值 会不会影响p的值?
// i = 100;
// printf("p里面的内容为(i的地址) %#X ",p);
// 通过上述实验 p和 i 是两个不同的变量 ,改变i的值 不会影响 p的值,同理,更改p的值 也不会影响i的值
// 更改*p的值 会不会影响i的值
// *p = 88;
// printf("i=%d ",i); //88
// 更改i的值 会不会影响 *p的值呢?
// i = 99;
// printf("*p的值%d ",*p); //99
//*p 和i 其实代表的是同一个变量,代表是同一块内存空间
system("pause"); // 调用windows下系统的命令 让程序暂停执行 方便观察程序的执行结果
}
从代码中我们可以知道:
· 1.指针就是地址,而c语言中我们在变量前面加上&符号就可以到地址也就是指针如:int i=9;那么i的指针表示方式是&i
· 2.指针变量就是用来存放指针的一个变量,如:数据类型* 变量名;如:int * p 这样就是一个指针变量,将我们上面的&i=p这样我们就将i的指针放在了指针变量p中
· 3.得到指针变量中的值使用符号*,例如我们将上面指针变量p的指针i的值取出来表示就是:*p
· 4.*p 和i 其实代表的是同一个变量,代表是同一块内存空间
·
5.指针介绍:
上一节我们已经知道了指针和指针变量的用法,下面我们将通过一个小程序进一步说明指针
#include #include
main()
{
// 所有的变量都会分配一块内存空间
// 指针就是用来表示一块内存空间的地址的
// 地址可以用过 &这个符号获取到某个变量的在内存中的地址
// 这个地址如果想把他存放起来 就需要有一个变量 去存放这个地址
// 存放内存地址的变量 就是指针变量
// 指针和指针变量
// 指针是用来表示一块内存地址的,
// 指针变量是用来存放一个内存地址的 .
//
printf("ready go! 剩余时间60秒 ");
int time = 60;
printf("time变量对应的内存地址为%#X ", &time);
for(;time>0;time--){
printf("剩余时间%d ",time);
sleep(4000);
}
printf("游戏结束");
system("pause"); // 调用windows下系统的命令 让程序暂停执行 方便观察程序的执行结果
}
从代码中我们编写了一个for循环,打印time指针值,可以在命令行程序已经在开始走了
从图中可能大概你们可以看到我使用一个外挂软件找到了time指针值,外挂地址
作者:云上伞
链接:https://www.jianshu.com/p/910a00795353