指针好奇怪

来源:互联网 发布:java编写apk 编辑:程序博客网 时间:2024/05/16 07:26

#include <stdio.h>#include <stdlib.h>  int main(void){           char *ptr = "Linux";      char c = 'T';           *ptr = c;                  printf("\n [%s] \n", ptr);      system("pause");            //return 0;}

这样写是错误的,当改成char  ptr[] = "Linux";时,输出的结果是正确的。

常量字符串存在静态区域,ptr指针指向的东西不可更改,prt[0] = 'c'  正在试图更改只读内存的值

下图中的做法也是错误的:

#include <iostream>using namespace std;#include <cstdio>#include <cstdlib>void replace(char* s,char *t){     for(int i = 0;s[i] && t[i];i++)     s[i] = t[i];          printf("%s\n",s);}int  main(){     //char s[10],t[10];     //scanf("%s%s",s,t);    // replace(s,t);     replace("aba","abc");     system("pause");}<span style="color:#ff0000;"></span>

改造如下:

下面的程序是正确的

#include <iostream>using namespace std;#include <cstdio>#include <cstdlib>void replace(char* s,char *t){     for(int i = 0;s[i] && t[i];i++)     s[i] = t[i];          printf("%s\n",s);}int  main(){     char s[10],t[10];     scanf("%s%s",s,t);     replace(s,t);     //replace("aba","abc");     system("pause");}


0 0
原创粉丝点击