首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-02-17 
对指针的一点疑问?#includestdio.hvoidSwapStr(char*str1,char*str2)voidPrint(char*str)voidmain(){c

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

热点排行