关于指针 与 字符数组

来源:互联网 发布:宁波软件开发公司 编辑:程序博客网 时间:2024/06/05 18:18

在我们写代码中使用到指针的字符串时,经常会出现运行错误,大部分出现的错误是试图去改变指针的字符串的内容。

指针的字符串的内容是保存在静态数据区的,是不能够改变的。

需要使用字符数组。

例如改变

char *p="abcdef";

p[1]='d';这是错误的不能改变里面的内容,但是可以使用里面的数据

char p[]="abcdef";

p[1]='d';这是可以的,数组是临时变量,存储在栈里面,可以改变里面的内容,

例如函数:

字符串右移N个字符

#include <iostream>using namespace std;char *youyi(char *str ,int len, int n){int i, j, k;k = 0;char tmp;char *p= str;          i = 0 ;j = len-1;while(i<j){tmp = str[i];str[i] = str[j];str[j] = tmp;i++;j--;}i = 0 ;j = len-n-1;while(i<j){        tmp = str[i];str[i] = str[j];str[j] = tmp;i++;j--;}i = len-n;j = len-1;while(i<j){         tmp = str[i];str[i] = str[j];str[j] = tmp;i++;j--;}return p;}void main(){char str[]="abcdef";
          char *str="abcdef";//这种方法是错误的,无法改变指针中的字符串内容。char *p;int len = strlen(str);p = youyi(str ,len , 2);cout<<p;}


还有

自己定义的 char *mystrcat(char *str ,char *src)

 

#include <iostream>using namespace std;char *mystrcat(char *str ,char *src){char *p = str;while(*str){str++;}while(*src){*str==*src;str++;src++;}*str='\0';return p;}void main(){char str[]="abcdef";char *str="abcdef";//错误的char *src="gh";char *p;p = mystrcat(str ,src);cout<<p;}