如果指针指向字符串常量char *argv="this",其他相当于const char *argv="this",因此不能随便更改指针所指向的内容,平时如果不注意经常会犯这个错。那该怎么办呢?
很简单--只要换成数组即可: char argv[]="this"。
好吧下面
结合具体的代码进行分析:
#include <stdio.h>
#include<stdlib.h>
void main()
{
char *argv="this";
char arr[]="that";
char temp;
printf("\n**************转换前********************\n");
printf("指针argv= %s\n",argv);
printf("数组arr= %s\n",arr);
/*指针交换 */
temp=*(argv+2);
*(argv+2)=*argv;//编译到这里出错了!
*argv=temp;
/*数组交换*/
temp=arr[2];
arr[2]=arr[0];
arr[0]=temp;
printf("\n**************转换后*********************\n");
printf("指针argv= %s\n",argv);
printf("数组arr= %s\n",arr);
}
第14行想要对指针内容进行更改,出现了编译错误,验证了上面所述内容。下面数组的用法是合理的。
说到这里应该稍微体会到指针的威力了吧!未完待续。。。