C++指针与函数

来源:百度知道 编辑:UC知道 时间:2024/06/06 18:25:42
各位大侠,请看我下面的程序:

#include <iostream.h>
void swap(char*&x,char*&y) {char *t=x;x=y;y=t; }//请注意此行(A 行)

void main(void)
{ char *a="张珊", *b="李是";
swap(a,b);
cout<<a<<'.'<<b<<endl;
}

请看上面的A行, 为什么t=x前会有一个*呢?

谢谢各们大哥,大人.小弟万分感谢

你看到a和b了没??它们前边也都有个*这说明你是知道a,b的类型了,同理,t是起到交换时临时保存a或b内容的作用了,当然类型也要和a,b一致。也就是说也得是一个指针型。为什么会在那句话前加个*,因为C++允许在程序内定义,那句就是在定义t是个指针。

这种编程很常见

若你写成char t=x;x=y;y=t;

t=x是错的,因为char *不能转换成char

这个转换需要重新定位,用c里面的指针(就是加*)或者用函数可以实



而x=t也是错的,因为char不能转换成char*即char型不能直接赋给指针



就是这个意思

你可以把这类记住,下回就不会再出错了

指针这块需要多动手实践,慢慢你脑子里会形成你的指针的概念。

你自己静静的思考一下吧。

//1
#include<iostream>
using namespace std;
///该函数交换两个指针的值;注意是指针的值,而不是指针所指内容
/**
char *&x 这个可以从右到左的顺序理解, x之前是&, 表明x是个引用(Refference),是个什么引用? &之前是个*,表明x是个指针的引用;
是个什么指针?*之前是char 表明是个char指针。
即:char *&x 表明x是个char指针的引用

通常我们对于引用的这样使用:
int i = 0;
int &j = i;
char *&x 只不过把int 换成 char*罢了!
*/
void swap(char*&x,char*&y)
{
char *t=x;
x=y;
y=t;
}

void main(void)
{
//定义字符串指针a,b;
char *a="张珊", *b="