对指针的一点疑问?
#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标准里是不是也加入了引用的概念?
我好像记得是这样,不知道记错没有