-
#include
#include
struct book
char book_id[20];
char book_name[20];
char book_writer[20];
struct book* next;
void main()
int i;
struct book * qwe,*tep,*head;
qwe = (struct book *)malloc(sizeof(struct book));
head=qwe;
for(i=0;i<2;i++)
printf("請輸入書籍ID%3D",i+1);
scanf("%s",&qwe->book_id);
printf("請輸入書名 %3d",i+1);
scanf("%s",&qwe->book_name);
printf("請輸入作者姓名 %3d",i+1);
scanf("%s",&qwe->book_writer);
tep= (struct book *)malloc(sizeof(struct book));
qwe->next=tep;
qwe=tep;
qwe->next=null;
printf("輸出書籍資訊");
for(i=0;i<2;i++)
printf("圖書 id%s圖書名稱%s圖書作者姓名%s",head->book_id,head->book_name,head->book_writer);
head=head->next;
printf("");
-
它可以這樣寫。
int n;
printf("請輸入你。
要定義的陣列的大小:");
scanf("%d",&n);
int *a = (int *)malloc(n*sizeof(int));申請n個整數資料空間,標頭檔案為。
如果應用程式失敗,if(a == null) 返回 -1memset(a, 0, n)。 應用於初始化的空間為 0,標頭檔案為 0。
但是,無法定義動態陣列。
-
1.使用malloc函式先分配第乙個維度的大小,然後在迴圈中分配每個維度的大小。
2. 示例,分配 3 行和 4 列的 2D 陣列:
#include
#include
int main()
初始化。 for (i = 0; i < 3;+i)}輸出測試。
for (i = 0; i < 3; +i)printf ("");
釋放動態空間。
for (i = 0; i < 3; +i)free(a);
return 0;}/*
輸出: 0 1 2 3
-
int size=5;陣列的大小可以由您定義,也可以由使用者輸入。
char *p=new char[size];或 int 和其他類似的型別。
之後,最好使用 p 作為陣列,例如 p[0] 是陣列的 0 元素。
-
假設您要定義。
du 的 zhi 群數為 int a[n],動態 dao 皈依方法為 answer:
#include
int main()
-
你看,當你輸入時,你給陣列分配了乙個值,最後,p 指向 a[9],然後你轉到 printf。
p++,其中 p 不指向 a,而是指向 a[9]; ,然後看看你的第二個程式,它也是錯誤的,它怎麼可能在我的電腦上用完,p 同樣沒有確定的點。
不執行。 這就是它應該的樣子。
#include
int main()
int *p,i,a[10];
p=a;for(i=0;i<10;i++)p++=i;
p=a;for(i=0;i<10;i++)printf("a[%d]=%d",i,*(p+i));
您的第二個程式用完了。 雖然答案是一樣的,但是,它是系統給出的隨機值,這是不正確的。
希望我能幫到你
-
p++,你要看運算子的優先順序,雖然我也有點忘記了,但無論如何,*p++ 都不可能是對的,無論是 *(p++) 還是 (*p)++ 都不能和 *p 有相同的值。
當然,*p++ 的意思是 *(p++),所以 p 已經移動到下乙個位置。
-
#include
void print(int *p, int len)}int main()
我頭暈目眩,我什至沒有採用它。
-
例如int a[10];
int *p=a;
如果你直接遍歷它,它是。
for(int i=0;i<10;i++)cout,指標遍歷是這樣的。
for(int i=0;i<10; i++)
-
指標解決方案遍歷陣列示例:
#include
int main();
int i, *p = arr, len = sizeof(arr) / sizeof(int);
for(i=0; iprintf("%d ", *p+i) )printf("");
return 0;
陣列只是記憶體中陣列元素的簡單排列,沒有開始和結束標誌,在查詢陣列的長度時不能使用 sizeof(p) sizeof(int),因為 p 只是乙個指向 int 型別的指標,編譯器不知道它是指向乙個整數還是一系列整數(陣列)。
因此,sizeof(p) 採用 p 指標變數本身占用的位元組數,而不是整個陣列使用的位元組數。 也就是說,根據陣列指標,整個陣列的元素數是不能反轉的,陣列的資訊從陣列的開頭到結尾。
-
#include
void print(int *p, int len)}int main()
我頭暈目眩,我什至沒有採用它。
-
vs2005,放 int i; 放在前面後,很正常。
首先,在純 C 中使用時定義變數是 C99 的標準。
VS2005 部分受 VS2005 中使用的 C99 標準支援。 預設情況下不支援 C 檔案,您的問題應該是您的檔名是。 cpp,不利於除錯 C 程式。
出現錯誤的原因是因為你已經用指標 p 遍歷了一次,並且 p 的位址已經改成了 a+5,不再是 a,然後繼續訪問就屬於跨界訪問,如果沒有掛起,則顯示值為記憶體中的值,該值是隨機的。
-
您之前已經使用了 *(p++),指標現在指向 a[4] 後面的單元格。 而這個儲存單元的價值是不確定的。 房東後來用P++迴圈輸出,當然是錯的。
中間應該加乙個句子 p=a; 然後,指標再次指向 a[0]。 房東明白嗎?
-
for(int i=0;i<5;i++)
錯! 我應該被定義在前面!
int a[5]=;
int *p=a,i;
for(i=0;i<5;i++)
就是這樣。
-
沒關係! 看看我的貼紙。 我正在使用 cfree
-
什麼編譯器,我在這裡 gcc 很好。
-
沒關係。
我之前剛剛單獨定義了 i。
MF47萬用表測量直流電壓:其普通板麵最大允許測量電壓為1000V。 另乙個測量電壓高達2500V的特殊端子(不建議一般操作人員使用)。 >>>More
在 Final Cut Pro 7 中,有幾種方法可以建立多螢幕過渡。 以下是一些基本方法: >>>More
使用iTunes刪除iPod中的歌曲的操作如下:
步驟2:使用資料線將iPod連線到計算機,iTunes將在識別iPod後自動安裝驅動程式。 >>>More