c 順序表程式,編譯沒有錯誤,但是執行時就是不行,求指教

時間 2021-09-03 08:12:51

1樓:匿名使用者

樓主 」type *data; 「 是一個結構體指標,你想把它當做結構體指標陣列來用。」 l.data[l.size]=item; 」

我根據你程式要實現的意思,提出幾種修改建議:

1、修改結構體成員type *data;為陣列 type data[maxsize];

原:typedef struct

seqlist;

修改為:

typedef struct

seqlist;

2、修改結構體物件

原:seqlist l;

修改為:

seqlist l[maxsize];

如果你還不明白,可以追問,我給你修改後的完整**。

2樓:匿名使用者

你的錯誤在於結構體中使用了string型別,結構體在你定義的時候大小就固定了(如果struct大小不固定,編譯器就不可能讓我們使用sizeof來計算大小),而string是不定長得,所以執行的時候程式試圖訪問越界記憶體時就會出現「某某某記憶體不能為read!」,你要麼使用定長字元陣列,要麼定義一個指標,先動態分配記憶體,再將指標指向該記憶體,當然,分配記憶體後記得釋放掉,你得程式就有這個問題,光知道使用malloc,不記得free。

另外,你的這種思路不是不行,但建立連結串列可能是更好得選擇。

你的程式還有一個問題:l.data[l.size]=item;結構體的內容拷貝可不能這麼幹,你必須將每一項拷貝進去。

以下是**和執行結果:

#include "iostream.h"

#include "string.h"

#include "stdlib.h"

#define maxsize 100

typedef struct

type;

typedef struct

seqlist;

int inilist(seqlist &l)

}for(i=0; idelram(l);

return 0;

}另外,作為程式設計師應該嚴謹一點,不要想當然,沒有除錯過的話建議不要亂給答案。

codeblocks在執行時已經沒有編譯錯誤,老是停止工作。

3樓:五個爪子抓媽拐

原始檔.c-->通過編譯器生成.o(目標檔案)-->+通過聯結器,呼叫庫函式**+刪註釋+外部函式價碼--->生成可執行檔案.exe;

從這個過程來講,compiler編譯器不知道,即缺失;手動新增就可以了。

如果編譯沒問題  但是一執行 就會自動彈出 .exe已經停止工作   也沒顯示**有錯誤之類 我是用codeblocks 執行的   執行結果如下:

compiling: f:\c++\1\1.cpp

linking console executable: f:\c++\1\1.exe

process terminated with status 0 (0 minutes, 0 seconds)

0 errors, 0 warnings

checking for existence: f:\c++\1\1.exe

executing: d:\program files\codeblocks/cb_console_runner.

exe "f:\c++\1\1.exe" (in f:

\c++\1)

process terminated with status -1073741819 (0 minutes, 4 seconds)

參考資料

csdn.csdn[引用時間2018-1-9]

為什麼在編譯c++程式的時候是沒有錯誤的,但是執行的時候就是出不來結果

4樓:吾守護奇蹟

編譯通過只是說明沒有語法錯誤,執行不出結果就是你**邏輯問題了貼**看看吧,自己打斷點除錯一下

while(r=!0)

寫反了吧, r != 0

否則就成死迴圈了。。。

5樓:夢中睡客

可能是你沒有輸出結果吧?

6樓:翼下之風

你可以跟蹤除錯一下就知道了

7樓:百科大全才

沒有編譯錯誤, 有邏輯錯誤;

你最好把**貼出來看看;

這個c程式編譯顯示沒有錯誤,為什麼不能執行?

8樓:育知同創教育

引數復必須制是指標(地址

bai)才可du以zhi。 scanf()函式要求參

數必須是指標類dao型,即將地址傳輸到其內,才可以讓a , b變數中獲取到資料。 如果你學過指標,你就會理解了。 c語言中函式的呼叫中,引數傳遞,只能傳遞數值。

如果只是將數值傳遞過去(接收者是形參),在子函式中變化,形參的變化,不會影響到實引數據的內容。 c中,每定義一個變數,系統都會在記憶體中給其分配一個空間用來儲存資料。而這個空間的編號就是這個變數的地址。

當我們將這個地址傳遞到子函式中,子函式在運算元據時,就會改變這個地址中的資料,這樣,實參的資料是會發生變化。 而你程式中,傳遞的是a b本身的值(可能是0,可能是1,可能是任意的數),scanf()將這兩個值當作地址去操作,因此會產生系統錯誤,導致程式執行停止。

為什麼c++程式編譯的時候沒有顯示錯誤,程式也可以執行,但是顯示不出結果?

9樓:匿名使用者

你確定這些資料都是int?比如增長率當你輸入0.1的時候讀進去的卻是0,會導致死迴圈。

按理說gnp,r,gnpn都應該是double吧。

C語言程式,沒有錯誤,但是執行不出來

stu n num malloc 10 sizeof char 錯誤,malloc返回void 型指標,必須在malloc前加強制轉換操作變為與stu n num相相容的型別。stu n nam malloc 5 sizeof char 錯誤,同上。scanf d t 是啥東西? 成員變數的指標使用...

c語言順序表執行錯誤

從你的螢幕輸出可以看出來。最後一次操作選擇了1.就是呼叫insert 是在insert的函式裡出錯的。你從螢幕輸入1 2 告訴函式要在第一個元素之前插入2這個值。看這裡 q l.elem i 1 q指向要插入的位置 for p l.elem l.length 1 p q p p指向最末一個元素,結束...

C 類的簡單程式執行有錯誤,求大神指點

百科大全才 include include using namespace std class cstudents cstudents cstudents cstudents cstudents char name,int age void cstudents initialize char nam...