初学习目标跟踪,感觉水很深,大牛很多,自己什么也不会,啥都要学习。代码代码看不明白,思路思路不太懂。现在就认准方面就学,先从C++学习开始,以下是从基本C++学习我觉得需要记得方面,写下来,也供以后翻阅,其中很多都是书上的观点并非本人的。自己先写到Word里,直接粘贴上来可能有错误,欢迎大家提出更正。也可以谈谈自己学习机器视觉方面的经验,让我借鉴一下,哈哈。
函数声明的格式:
type name (arguement1,argument2……)statement
声明一个函数必须以一个数据类型(type)开头,它是函数由return语句所返回的数据类型。没有返回值的类型函数,使用void。
注意:1.当我们调用一个带参数的函数时,我们传递到函数中的是变量的数值而不是变量的本身。
例:
#include<iostream>
using namespace std;
int addition (int a,int b)
{
int r;
r=a+b;
return (r);
}
Int main()
{
int x=5,y=3,z;
z=addition(x,y);
cout<<”结果”<<z;
return 0;
}
这个例子在调用addition同时将x和y的值传给它,即5和3而不是两个变量x,y;函数在调用时,变量a和b的值分别为5和3,但在函数内对a和b所做的任何修改都不会影响到变量x和y的值,因为它们只是传递的是它们的数值。
注意2.如果函数中的每一个变量的类型后面跟了一个地址附(&),它的作用是指明变量按地值传递的,而不是像通常的那样按数值传递的。当按地址传递变量时,我们传递的是这个变量本身,即我们对函数的变量做修改将会影响到函数外面的被传递的变量。
例:
#include<iostream>
using namespace std;
voidy duplicate (int &a,int &b int&c)
{
a*=2
b*=2
c*=2
}
int main()
{
int x=1,y=3,z=7;
duplicate (x,y,z);
cout<<”x=”<<x<<”y=”<<y<<”z=”<<z;
return 0;
}
x=2,y=6,z=14
如果没有地址符&,则输出的x,y,z的值将不会改变,仍为1 3 7。
注意3. 当声明一个函数的时候我们可以给每一个人参数指定一个默认值。如果当函数被调用时没有给出该参数值,那么默认值将被使用。给出例子方便理解。
例:
#include<iostream>
using namespace std;
int divide (int a ,int b)
{
int r;
r=a/b;
return (r);
}
int main()
{
cout <<divide(12); //此时a=12,b调用默认值2
cout <<endl;
cout<<divide(20,4); //此时a=20,b=4
return 0;
}
结果为:
6
5
递归函数(recursivity):
#include<iostream>
using namespace std;
long factorial(long a)
{
if (a>1)
return (a*factorial(a-1));
else
return (1);
}
int main()
{
long l ;
cou <<”type a number: ”;
cin>> l;
cout <<”!”<<l<<”=”<<factorial(l);
return 0 ;
}
结果为:
type a number : 9 (用户输入)
!9=362880
举这个例子说明两点:
1. 我们可以看出以上构造函数都在main函数之前,换句话说就是在第一次被调用之前,如果不是这个顺序会出现编译错误。原因其实就是在调用一个函数之前,函数必须已经被定义。简单说这是c语言的一个规则,遵循就好。
再说点,大部分程序员都会在main或者其他函数之前写出所有被他们调用的函数的代码,那就是在使用前先声明函数的原型定义。声明函数就是对函数在完整定义之前做一个短小重要的声明,以便让编译器知道函数的参数和返回值。
2. 就是在这个里有个局限就是数据类型长整型无法储存12!以上的阶乘值(可以存储12!);因为长整型 long 占用4个字节 无符号的范围可以从0到4294967295;12!值为47900600小于该值故可以存储;但是13!为6227020800超出该范围值故不可以存储。编程需要注意一下吧。