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

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

關于指針數組的問題,為什么最后輸入的字符串把之前的字符串給覆蓋掉了?運行結果有問題

關于指針數組的問題,為什么最后輸入的字符串把之前的字符串給覆蓋掉了?運行結果有問題

C++
顧玌 2015-12-02 21:28:58
#include<iostream.h> #include<string.h> int?sort(char?*book[],int?num) { int?i,j; char?*temp; for(j=1;j<=num-1;j++) for(i=0;i<num-1-j;i++) if(strcmp(book[i],book[i+1])>0) { temp=book[i]; book[i]=book[i+1]; book[i+1]=temp; } return?0; } int?main() { int?i,n; char?*book[10]; char?a[10]; cout<<"請輸入字符串數量:"; cin>>n; cout<<"請輸入字符串:"<<endl; for(i=0;i<n;i++) { cin>>a; book[i]=a; } sort(book,n); for(i=0;i<n;i++) cout<<book[i]<<endl; return?0; }
查看完整描述

1 回答

已采納
?
onemoo

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

book是一個存char指針的數組,a就是一個char數組。那么在main的for循環中:

cin>>a; ?// 將輸入的字符串存入a

book[i]=a; ?// 把a的地址存入book[i],問題就在這里,book中的元素都是指向a的!

問題就在于:你設計的book并沒有真正存入輸入的字符串,其中只是保存了幾個指向字符串的指針,而且還都是指向同一個字符數組的。 所以book中體現的所有字符串都是你最后輸入的那個。

后面sort函數中對字符串的比較也沒有意義了。

查看完整回答
反對 回復 2015-12-03
  • 顧玌
    顧玌
    那我應該要怎么改,才能把輸入的字符串存到數組里
  • onemoo
    onemoo
    你可以將book設計成實際存儲字符的數組,比如 char book[10][10] 之類的。 在每一次讀取輸入后,都要將a中的字符逐個復制到book里的適當位置上。 這樣能確保這些字符串是“實際”存儲在book中的。
  • 顧玌
    顧玌
    明白了,謝謝
  • 1 回答
  • 0 關注
  • 1540 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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