快捷搜索:

C/C++ 学习手札(一)

出于必要,近来钻研C/C++.简单认识一下这个让我遗忘多年的说话。作为进修,在这里记录。同时比较C与C++的区别。

C的代码:

#include

#include

/**

*定义一个布局体

*/

struct Location {

int x; // 横坐标

int y; // 纵坐标

} location;

int main(void) {

printf("输入X坐标:\t\n");

int x;

scanf("%d", &x);

location.x = x;

printf("输入Y坐标:\t\n");

int y;

scanf("%d", &y);

location.y = y;

printf("X坐标是:\t%d\n", location.x);

printf("Y坐标是:\t%d\n", location.y);

//做倒三角打印

int i;

for (i = 0; i

这里应用了布局体Location,并天生了一个实例location.经由过程scanf向x、y输入数字。以location.x = x;要领将数值赋值给布局体location的变量x.由此可以看出布局体便是现在面向工具的根基,尤其是数据工具的前身。

我们盼望打印操作能够自力出来,成为一个函数,可以这么写:

// 声明函数

void print(int x, int y);

c是面向历程的谋略机说话,要在主函数内调用其他函数,必须要在主函数前声明函数,要么就直接把函数按照调用序次逆次由上到下排序。即就是面向工具的C++,也是如斯。

/**

* 倒三角打印

*/

void print(int x, int y) {

int i;

for (i = 0; i整体代码如下:

#include

#include

/**

*定义一个布局体

*/

struct Location {

int x; // 横坐标

int y; // 纵坐标

} location;

// 声明函数

void print(int x, int y);

int main(void) {

printf("输入X坐标:\t\n");

int x;

scanf("%d", &x);

location.x = x;

printf("输入Y坐标:\t\n");

int y;

scanf("%d", &y);

location.y = y;

printf("X坐标是:\t%d\n", location.x);

printf("Y坐标是:\t%d\n", location.y);

//做倒三角打印

print(x, y);

return EXIT_SUCCESS;

}

/**

* 倒三角打印

*/

void print(int x, int y) {

int i;

for (i = 0; i比较C++的代码:

#include

using namespace std;

// 定一个类

class Location {

private:

int x; // 横坐标

int y; // 纵坐标

public:

Location() {

}

Location(int x, int y) {

this->x = x;

this->y = y;

}

int getX() {

return x;

}

void setX(int x) {

this->x = x;

}

int getY() {

return y;

}

void setY(int y) {

this->y = y;

}

};

int main() {

//声明

Location location;

cout > x;

location.setX(x);

cout > y;

location.setY(y);

cout

这里的location便是一个类Location的实例了。同样是赋值操作,对x赋值调用location.setX(x);措施,而内部实现是this->x = x;显着的指针特色->而不是。。这个时刻有了私有变量的观点,上面C的代码中的location.x就分歧适了。必须应用location.getX()措施输出x的值。仍旧让我应用起来不惬意的是cin 与 cout ,为什么在C++面向工具的说话里,却不能以措施的要领实现,照样要应用这样的特定的字符串来(>> 与

#include

using namespace std;

class Location {

private:

int x, y;

public:

Location() {

}

Location(int x, int y);

int getX() {

return x;

}

void setX(int x) {

this->x = x;

}

int getY() {

return y;

}

void setY(int y) {

this->y = y;

}

};

Location::Location(int x, int y) {

this->x = x;

this->y = y;

}

// 省略

现在类中定义措施Location(int x, int y);然后在类外实现该措施:

Location::Location(int x, int y) {

this->x = x;

this->y = y;

}上述是一个构造措施,假如要返回值的值类型要定义在措施最前面,如:

int Location::getX() {

return y;

}

我们把打印操作改成函数实现,留意:在C++里假如一个函数被高频度履行,声明为内联函数(inline),可以前进履行效率!

// 声明函数

inline void print(int x, int y);C++一样没有跳出C的特色,要在主函数调用前声明函数。

/**

* 倒三角打印

*/

inline void print(int x, int y) {

int i;

for (i = 0; i给出整个代码:

#include

using namespace std;

/**

*定义一个类

*/

class Location {

private:

int x; // 横坐标

int y; // 纵坐标

public:

Location() {

}

Location(int x, int y) {

this->x = x;

this->y = y;

}

int getX() {

return x;

}

void setX(int x) {

this->x = x;

}

int getY() {

return y;

}

void setY(int y) {

this->y = y;

}

};

// 声明函数

inline void print(int x, int y);

int main() {

//声明

Location location;

cout > x;

location.setX(x);

cout > y;

location.setY(y);

cout

学过Java的人感觉很别扭。呵呵,我也一样。

着末,让我们看看这2个法度榜样的终极输出:

console代码

输入X坐标:9

输入Y坐标:9

X坐标是:9

Y坐标是:9

1* * * * * * * * *

2* * * * * * * *

3* * * * * * *

4* * * * * *

5* * * * *

6* * * *

7* * *

8* *

9*

换成Java实现:

Java代码:

import javax.swing.JOptionPane;

public class Location {

private int x;

private int y;

/**

* @return the x

*/

public int getX() {

return x;

}

/**

* @param x

*the x to set

*/

public void setX(int x) {

this.x = x;

}

/**

* @return the y

*/

public int getY() {

return y;

}

/**

* @param y

*the y to set

*/

public void setY(int y) {

this.y = y;

}

/**

* @param args

*/

public static void main(String[] args) throws Exception {

Location location = new Location();

int x = Integer.parseInt(JOptionPane.showInputDialog("输入X坐标:"));

int y = Integer.parseInt(JOptionPane.showInputDialog("输入Y坐标:"));

location.setX(x);

location.setY(y);

location.print(x, y);

}

/**

* 倒三角打印

*

* @param x

* @param y

*/

public void print(int x, int y) {

for (int i = 0; i呵呵,用Java实现,感到便是好!

您可能还会对下面的文章感兴趣: