1樓:網友
#include
using namespace std;
class a
private:
char *a;
public:
a(char q)
a = new char[10];
strcpy(a,q);
void show() a()
int main()
char *p="asdf";
cout<<*pa a1(new char("qwertyui"));
return 0;
這個是我修改後的**,看得出來樓主對動態建立很混亂!
首先看你的**,你雖然編譯通過了,難道你沒發現你執行的時候出了問題嗎,程式崩潰了!原因是你定義的char* a是乙個野指標,沒有初始化,貿然對他進行操作,程式當然崩潰了,改的方法有兩個,乙個就想我給的**一樣,另一種方法就是定義乙個char a的陣列就可以了。另外在如果按照我給的**相應的的在解構函式delete a!
對於你註釋的**,呵呵。
new char("qwertyui");有這樣的寫法嗎!至少我沒見過 ,當然會報錯,實際上動態建立已經在建構函式中完成了,你在main函式中這樣寫,看得出來你理解不是很到位!!!
這是我的,不知樓主滿意否?
2樓:網友
物件a1怎麼傳值,那要看你的建構函式是怎麼寫的了。你這裡寫的是a(char q)
說明你要傳乙個字串給建構函式。
呼叫可以寫成a a1("asdf");
或者char *p="asdf";
a a1(p);
3樓:枯魚
不能給a1傳值是因為你只是定義了char *a;從下面來看你很明顯是要定義個字元陣列,但是你並沒有分配空間啊,接下來strcpy(a,q)只能接受q的第乙個字元而已嘛。
c語言指標程式問題
4樓:琦炎羅晨濡
首先指出一下。
函式arradd中。
return
sum;這條語句應該在迴圈體外面;
首先你要知道,二維陣列說二維只是形象的說法,其實在記憶體中還是線性順序儲存的,p=array[0],array[0]其實是整個二維陣列的第乙個元素的位址,也就是array[0][0]的位址。當不斷arr++時,arr每一次都使arr指向下乙個int型資料,就是市每一次arr增加乙個2個或4個位元組,也就是乙個int型,首先是把第一列遍歷完了,然後進入第二列繼續,所以這樣是可以求和的。
其實對於二維乃至多維的陣列,你可以這樣理解,一維陣列很清晰吧,二維其實就是一維陣列的每乙個元素擴張成乙個陣列,這樣arr++就比較好理解了,先是arr[0]的每乙個元素,繼而arr[1]的每乙個元素。
2)這是都是正確的,a[0]是位址沒有錯,要注意int*p)[4];這樣定義的話,因為這裡的(*p)是乙個指標,所以p就是乙個指向指標的指標了,而a
和&a[0]都可以理解為指向指標的指標。
還有一點你要注意,指標和陣列有本質的區別,雖然有時可以互相代替使用。
c程式指標問題?
5樓:網友
首先評價一下這個題目,這個題目有兩個作為軟體業者非常不贊同的地方,違背軟體工程的基本原則:
a)這麼簡單的問題用遞迴演算法,遞迴需要非常謹慎,儘量避免。
b)*(a+1)=0並不是很好的寫法,個人非常不建議用這種風格,這本書的水平因此值得懷疑。
原因很簡單,所有字串必須以'\0'結束,當if條件不滿足時,a+0處就是個位,a+1處應該是字串結束符號。但是他的寫法是故意降低了可讀性讓你寫答案,這同樣違背軟體工程需要。
比較好的寫法應該是。
void convert( char * buffer, int n)
if(n ==0) {
strcpy(buffer, "0");
return;
while(n>0) {
buffer = 0'+(n%10);
n = n /10;
buffer ++
buffer = 0';
6樓:網友
假設有:char str[16];
下面的呼叫順序是反的:
第一次呼叫時:a=str,n=483,執行*a=n%10+'0';即*(str)=483%10+'0'='3';,返回主調函式。
第二次遞迴呼叫時:a=str+1,n=48,執行*a=n%10+'0';即*(str+1)=48%10+'0'='8';,返回第一次呼叫。
第三次遞迴呼叫時:a=str+2,n=4,執行else *(a+1)=0;即*(str+3)=0;,執行*a=n%10+'0';即*(str+2)=4%10+'0'='4';,返回第二次遞迴呼叫。
所以,str儲存的就是"384"。
而*(a+1)=0;即*(str+3)=0;,就是用來在數字4後面新增結束字元的。
c指標陣列問題,C 中關於指標陣列的問題。
typedef 是 定義一種資料型別 就好像內建的資料型別如 int 它僅是乙個定義,不產生例項物件,即不分配任何記憶體,怎麼能給它賦值呢?對陣列賦初值的方法用for迴圈,在這裡還可用memset nod的記憶體分配在動態棧上,所以值不能確定,要初始化,必須使用顯式的方式。cdma980的回答是對的...
用Devc 寫的C語言程式,沒法除錯
dev c 是乙個windows環境下c c 的整合開發環境 ide 小巧輕量但是功能齊備,適合初學者與程式設計高手的不同需求,是學習c或c 的首選開發工具。很多初次學習程式語言的人,在動手嘗試編譯執行第乙個程式時往往不是程式設計方面的問題,而是對開發工具的選擇和使用由於不熟悉而耽誤太多的時間。此處...
c 中指標基本概念的問題,C 中定義指標問題
const int a const修飾指向的物件,a可變,a指向的物件不可變 int const a const修飾指向的物件,a可變,a指向的物件不可變 int const a const修飾指標a,a不可變,a指向的物件可變 const int const a 指標a和a指向的物件都不可變 我們...