亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C語言中關于字符串指針的問題?

C語言中關于字符串指針的問題?

C
廢寢忘食陳同學 2019-08-19 16:00:21
#include <stdio.h>void copy(char *p,char *q){? ? while(*p++=*q++);? ? ?printf("%s",p);}int main(){? ? char *a="asd";? ? char *b="sad";? ? copy(a,b);? ? return 0;}我想進行字符串復制,就是把a給復制成b的內容,請問為什么一直出錯?好像提示是內存出問題但我不明白
查看完整描述

1 回答

已采納
?
onemoo

TA貢獻883條經驗 獲得超454個贊

看來你知道“字符串”也就是“字符數組”;也知道數組在這里會隱式轉型為指向其首元素的指針,那么:

代碼中的 "asd"?和 "sad"?這樣直接寫出來的字符串叫作“字符串字面量”——是的,它也是字符數組——但它是不可修改的,一般存在于程序中的只讀數據段中,修改它會導致未定義行為,通常就是崩潰出現“內存不能為?read”之類的提示...


解決辦法是:不要用字符串字面量,而是用普通的字符數組,這就沒有不能修改的問題了

char?a[]?=?"asd";
char?b[]?=?"sad";


查看完整回答
1 反對 回復 2019-08-19
  • 1 回答
  • 0 關注
  • 2900 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號