#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 回答
- 0 關注
- 1431 瀏覽
添加回答
舉報
0/150
提交
取消