#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));都會(huì)報(bào)錯(cuò) system("pause");}//上式中的問題為什么指針在前會(huì)報(bào)錯(cuò),而換成數(shù)組在前就不會(huì)報(bào)錯(cuò)?如printf("%s\n",strcpy(s+3,p+4));//錯(cuò)誤問題0x0F121DF7 (msvcr110d.dll) (ConsoleApplication1.exe 中)處的第一機(jī)會(huì)異常: 0xC0000005: 寫入位置 0x009ECC83 時(shí)發(fā)生訪問沖突。//0x0F121DF7 (msvcr110d.dll) (ConsoleApplication1.exe 中)處有未經(jīng)處理的異常: 0xC0000005: 寫入位置 0x009ECC83 時(shí)發(fā)生訪問沖突。
1 回答

傻圓傻圓
TA貢獻(xiàn)14條經(jīng)驗(yàn) 獲得超23個(gè)贊
char?*str?=?"xxxxxxxxx";????//?只讀 char?str[]?=?"xxxxxxxxxx";??//?讀寫
????兩種方式定義的字符串都可以訪問其中的內(nèi)容,但是具體的細(xì)節(jié)還是有一些不同的,第一種定義方法一般叫做字符串常量,常量,就意味著不能修改其中的內(nèi)容,所有在你的代碼中,嘗試修改了這個(gè)常量中的內(nèi)容,所以會(huì)報(bào)錯(cuò)。
????第一種方式我個(gè)人理解如下(不一定準(zhǔn)確,個(gè)人感覺):
const?char?str[]?=?"xxxxxxxxxx"; const?char?*p_str?=?str;
- 1 回答
- 0 關(guān)注
- 1429 瀏覽
添加回答
舉報(bào)
0/150
提交
取消