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

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

C語言指針的問題,字符串和數組指針的問題

C語言指針的問題,字符串和數組指針的問題

C C++
瓊華紫英 2018-01-28 22:33:19
#include<iostream>void main(){?char s[20]="abcdefghi";?char *p="1234567";?printf("%s\n",strcpy(p+3,s+8));//printf("%s\n",strcat(p+3,s+8));都會報錯 system("pause");}//上式中的問題為什么指針在前會報錯,而換成數組在前就不會報錯?如printf("%s\n",strcpy(s+3,p+4));//錯誤問題0x0F121DF7 (msvcr110d.dll) (ConsoleApplication1.exe 中)處的第一機會異常: 0xC0000005: 寫入位置 0x009ECC83 時發生訪問沖突。//0x0F121DF7 (msvcr110d.dll) (ConsoleApplication1.exe 中)處有未經處理的異常: 0xC0000005: 寫入位置 0x009ECC83 時發生訪問沖突。
查看完整描述

1 回答

?
傻圓傻圓

TA貢獻14條經驗 獲得超23個贊

char?*str?=?"xxxxxxxxx";????//?只讀
char?str[]?=?"xxxxxxxxxx";??//?讀寫

????兩種方式定義的字符串都可以訪問其中的內容,但是具體的細節還是有一些不同的,第一種定義方法一般叫做字符串常量,常量,就意味著不能修改其中的內容,所有在你的代碼中,嘗試修改了這個常量中的內容,所以會報錯。

????第一種方式我個人理解如下(不一定準確,個人感覺):

const?char?str[]?=?"xxxxxxxxxx";
const?char?*p_str?=?str;


查看完整回答
1 反對 回復 2018-02-14
  • 瓊華紫英
    瓊華紫英
    我試了一下,確實指針沒辦法寫入。但我記得數組名也是常量吧?為啥它可以進行寫入?*(p+3)=‘1’;會報錯而*(s+3)=‘1’;不會?
  • 1 回答
  • 0 關注
  • 1431 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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