//前言:本人小学学过一点点free pascal(后文通常为fpc),现在是大一新生,应该是要学c++的,现已学了一丢丢,简单总结一下,主要是面对像我这类free pascal转C++的群体,因为网上貌似是没有相关专题的,自学起来挺麻烦的,就总结一下,主要是给自己看,当然刚入门C++的小伙伴也可以来看看,会有一些常见的错误,且看且了解吧。(不喜求轻喷,本就是整理给自己看的);
编译系统方面,建议还是用visual studio(后文统称vs)。dev c++ 的话把我给折磨坏了,有的版本连调试都调试不了,会有一些奇奇怪怪的bug。还有下vs的时候记得在修改里面选择:vs扩展开发、使用c++的桌面开发。时间会有点久,本人下了一个小时左右,请耐心等候。
那么正文部分来了哦:
1、C++首先要打头文件,这个是free pascal 没有的,主要是打了头文件之后就可以用一些系统自带的函数,会很舒服(像快排就不用手打了,直接用一个sort);不过相应的,要用一个包括sort函数的头文件(自己上网可查,不细说了);本人刚刚入门,常打的就是#include<iostream>,偶尔在字符串处理的时候用到#include<string>,具体的头文件等我学深一点之后会总结一篇出来。然后要打using 什么的反正有一大堆,这个网上很好找的,多打两次就背下来了;
2、 变量定义篇:我们挨个来说一下:
free pacsal | c++ | |
整型 | a:longint | int a |
实型 | a:real | float a(或者 double a(精度更高)) |
字符 | a:char | char a |
字符串 | a:string | string a |
大整数 | a:int64 | long long a |
布尔 | a:boolean | bool a |
数组 | a:array[1..10] of longint; | int a[10]; |
这些差不多已经够初学者用了,下面来细讲一些小细节;
首先可以注意到我并没有写fpc里面的integer类型,在c++里貌似是没有对应一样的;
整形的话都一样的;
*细节一:
字符串需要注意一下:(a)、fpc中字符串从第一位开始,但是c++是从第零位开始记录的,举一个例子:字符串a="add", fpc中a[1]="a", 但是c++中a[1]="d", a[0]="a",所以在进行字符串处理的时候需要注意一下以前的习惯; (b)、在对字符串a 进行赋值为“*”时,fpc中用的是单引号,即a:='*'; 而C++中用的则是双引号,即a="*"; (c)、fpc 中字符串好像最多是十几位,再大要用ansistring类型,c++中字符串好像可以很长很长,反正比fpc的长(上网查的,错了轻喷);
*细节二:
字符的话二者赋值时都是用单引号,没啥区别,但是(这可能只是个例,我的舍友喜欢这样打),c++常有人用 char a[8]来以一个全是字符的数组代替字符串,嗯,我不知道如何评价,反正就是有这么一种现象,个人还是认为能用字符串就没必要用全是字符的数组,毕竟字符串中有很多挺方便的函数;
细节三:
数组方面的话可以注意一下,c++是自带第0位的,比如我定义了一个数组a[10],那我是有a[0]的,那fpc的xdm就不要想当然把 fpc的a[1..10] 和 c++的a[10]画上等号,应该是a[0..10];
细节四:布尔的话就没什么好说的了,都差不多;
*细节五:写法上的差异。c++肯定跟简单,fpc都在几年前被noip 淘汰了。
c++中可以到处定义变量如
int main(){
int a;
cin>>a;
int b;
return 0;
}
就是说在主函数内我定义了两个变量,一个还是读入完之后才定义的,在fpc 中就报错了,但在c++中就没问题,这样会方便一些,不用统一写在上面;
*注意,定义在 int main里面的变量并不是全局变量,如上图中a,b都是局部变量,是只能在主函数(主程序)里用的变量,如果在子函数(子程序)里面调用 这里的a ,就会报错;
全局变量:
#include<iostream>
using namespace std;
int a,b;
void ss()
{
b=a;
}
int main(){
cin>>a;
ss();
cout<<b;
return 0;
}
像这种子程序里面就可以直接用a,b了,因为他们是全局变量;
*细节六:c++中变量初始的值和fpc 不同的,fpc 中 数组a[1..10]每一位初始都是0,但是c++中a[10]则有的为0,有的很大很奇怪,以及类推说明使用c++时要注意初始化你的变量,不要想当然觉得我没给它赋过值,那它就一定是0或者false,当然关于数组初始化用的函数我还不太清楚,到时候统一整理一期和数组有关的函数大全;
不要问我为什么没有fpc的图,fpc 已经落到被这个网站抛弃了,在插入代码里面搜不到fpc 这种语言呜呜呜。本人已经在尽力回顾了,现在还是用军训中午的时间写的,如有不规范处本人立即道歉,之后还会继续跟新这个 free pascal 转学 C++注意事项(c++新手指南)系列,以后的话会随着自学的进度再写一些结题报告啊,或者是对算法的理解什么的。嗯,先就这么的,下一期应该是关于一些常用函数的fpc转c++的翻译吧,也可能不一定是,我尽量弄得有条理一点。嗯,就这样了,现在还能极限睡个半个钟午觉(笑哭);