C 中很奇葩的問題,變數先進行運算再用來宣告動態陣列時,部分無法進行初始化,求解救

2022-06-10 15:21:48 字數 857 閱讀 3193

1樓:

不要懷疑c=m+n就不能用c申請記憶體,動態申請記憶體的初衷就是要解決這類問題。你的問題在

for (i = 0, j = 0, k = 0; i < c; i++)

else

這一段。c的長度是m、n之和,你for (i = 0, j = 0, k = 0; i < c; i++)這樣用c控制迴圈,中間肯定要使a陣列或b陣列越界,出現亂碼就很正常了!

2樓:匿名使用者

不是初始化的問題,是你的迴圈寫的有問題, p[i] = a[j]; 這一句,你的j的迴圈範圍不對,你陣列a的大小是n,你卻用m在迴圈,所以讀越界了。

3樓:匿名使用者

#include

using namespace std;

int main(void)

cout << "請輸入陣列b的 " << m << " 個元素:";

for (i = 0; i> b[i];

}for (i = 0; i a[j])

}for (i = 0; i b[j])

}for (i = 0, j = 0, k = 0; k < n + m; k++)

else if(j < m)

}cout << "陣列a為:";

for (i = 0; i

4樓:

因為c開始的陣列長度不是乙個定值

5樓:匿名使用者

程式有邏輯錯誤:

if (a[j] <= b[k])

...此處應該是這樣寫:

if (j

c指標變數的問題,C語言指標變數大小的問題

p 1,是把1賦值給p所指向的物件,而p 1是把1賦值給p,這個1是被當做位址的。p 1和p 1是不同的概念,p 1 是賦值語句,還有在c語言中 1 0 是作為真假來用的,就相當於布林型數一樣。這兩個語句都是合法的。區別就是指標 的意思是取位址的意思。p是乙個指標,他的值是記憶體中一塊記憶體的位址,...

C語言中連結串列中的結構體指標變數問題求教

定義結構體指標變數時,只分配儲存指標型別需要的空間,比如listnode p 這裡p有給他分配儲存指標的4個位元組的空間。實際上你是要讓p指向一個結構體空間的,這個結構體空間在哪?可以先定義listnode a 然後 p a 這時p指向一個之前申請分配過空間 編譯器設定過其地址和大小,在棧空間存放著...

關於c語言結構體變數成員引用的問題

沒有a 這種賦值方法,改成 a.age 10 a.cass 3 或b age 10 b class 3 都行。另 class是c 關鍵字,若使用的是c 相容的c編譯器,則過不了編譯,應另起一名,如class,或classs等。c語言 結構體變數的引用的問題 你問的兩個問題都跟結構體無關。strcpy...