程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 求前輩們指點-一個關於VC6下strcpy函數的問題

求前輩們指點-一個關於VC6下strcpy函數的問題

編輯:編程綜合問答
一個關於VC6下strcpy函數的問題

#include
using namespace std;
#include
void main()
{
int b,b1,b2;
char p2[4];
char p[3]={"dsfs","jasa","ussg"};
int a1=1,a2=1;
strcpy(p2,
(p+a1));//同下
strcpy(*(p+a1),*(p+a2));//為什麼運行這句會出現運行停止
strcpy(*(p+a2),p2);//同上
b=strlen(*(p+a1))-1;//但是為什麼這兩句又不會出錯
b1=strlen(*(p+a2))-1;
b2=b>b1?b1:b;

for(int a4=0;a4<3;a4++){
cout<<*(p+a4)<<b<<" ";}
}

最佳回答:


題主,我又看了您在其它回答下面的回復,在這裡幫您解惑一下。首先,strlen為什麼不崩潰,這是因為strlen並不做修改等工作,它僅僅是為了統計長度,自然不會崩潰。 然後,像【char a[3] = "hu";】這種代碼,a的地址是處於堆棧區的。打個比方,a的地址是1111,而那個【"hu"】所處的位置卻是常量區【比如地址是9876】,那個【a[3] = "hu";】時會發生什麼呢?程序會記住【"hu"】的地址9876,然後從這個位置開始,逐一拷貝字符內容到a地址1111上。。。

qq_33133771
wenpinglaoyao
qq_33133771
wenpinglaoyao
wenpinglaoyao
qq_33133771
wenpinglaoyao
dragonvii
dragonvii
wenpinglaoyao
wenpinglaoyao
dragonvii
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved