C 指標的問題,幫俺除錯下程式啊

時間 2025-01-16 21:25:23

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指向的物件都不可變 我們...