读书人

对指针的一点疑问?解决思路

发布时间: 2012-02-17 17:50:42 作者: rapoo

对指针的一点疑问?
#include <stdio.h>


void SwapStr(char *str1, char *str2);
void Print(char *str);

void main()
{
char *str1 = "hello world! ";
char *str2 = "this is my frist program! ";

Print(str1);
Print(str2);

SwapStr(str1, str2);

Print(str1);
Print(str2);
}


void SwapStr(char *str1, char *str2)
{
char *temp = str1;
str1 = str2;
str2 = temp;
}


void Print(char *str)
{
printf( "%s\n ", str);
}

问题一:我为什么没有交换两个指针的地址呢?问题在那里啊?怎么改?

问题二:如果用引用该怎么写?我用void SwapStr(char &str1, char &str2)编辑不过去.

PS:希望高手可以给我完整的解答,关于指针与引用,而不要就这个问题解决.谢谢~

[解决办法]
可以改成这样:

void SwapStr(char **str1, char **str2);
void Print(char *str);

void main()
{
char *str1 = "hello world! ";
char *str2 = "this is my frist program! ";

Print(str1);
Print(str2);

SwapStr(&str1, &str2);

Print(str1);
Print(str2);

system( "pause ");
}


void SwapStr(char **str1, char **str2)
{
char *temp = *str1;
*str1 = *str2;
*str2 = temp;
}


[解决办法]
void SwapStr(char **str1, char **str2)
{
char *temp = *str1;
*str1 = *str2;
*str2 = temp;
}
对了,上面的程序就OK了,功能和下面的一样
void SwapStr(char* &str1, char* &str2)
{
char *temp = str1;
str1 = str2;
str2 = temp;
}

在C语言C99标准里是不是也加入了引用的概念?
我好像记得是这样,不知道记错没有

读书人网 >C语言

热点推荐