1樓:匿名使用者
malloc在沒有足夠空間申請的時候會返回null,也就是0
因為&是取址運算子,注意,是運算。最後的q-p實際上等於q地址-p地址的偏移量,系統很智慧的給出了偏移5個int
realloc才可以在執行時改變空間的大小(陣列的大小)
2樓:與科技苦於
malloc給你的是地址,0地址就是null,while(1)一直執行,直到沒有記憶體可以申請,就返回null,此時p的值就為null,下面的語句向0地址寫入資料,程式就會終止
a[5]沒越界...就算越界了,比如a[6],雖然越界了,可不代表它沒有值,但他的值是不確定的對!
3樓:
1, malloc無空間時返回null,即0. 當指標指向0地址時,則是空指標,這裡是不允許直接寫入的。所以或奔潰退出
2. 陣列a的大小是6,因為5後面還有個逗號。 q指向第六個元素,p指向第1個元素,兩個整型指標相減為5.
3. 大小不是你想變,想變就能變。 一旦分配就不能再改變分配空間的大小了(除非釋放後重新分配)
4樓:匿名使用者
malloc返回連續的儲存單元的首地址 0地址不可用。
a陣列實際元素為 1 2 3 4 5 0 所以a[5]存在 地址差為5。
陣列一旦定義了,整個大小都不能變。 但是可以在程式執行時確定陣列長度(使用動態聯編定義動態陣列)
c語言題目2個,求高手幫忙解答,謝謝了!
5樓:我拋錨起航
本人也是初學c語言,寫得不夠簡練,見諒
1.#include
#include
main()
else i=1;
switch(i)
getch();}2.
#include
#include
main()
else
getch();}
6樓:
1、判斷迴文數
#include
int x,y;
judge(int * data,int len)}if(f==0)
printf("%d 是迴文 !\n",x);
}separate(int *data,int n)*(data+y)='\0';
for(j=0,k=y-1; j<=k; j++,k--)}void main()
2、比較並連線字串
#include
int main(void)
;char str2[256] = ;
char str3[512] = ;
printf("please input two strings:str1 str2\n");
scanf("%s %s", str1, str2);
printf("now-------\nstr1:%s\nstr2:%s\n", str1, str2);
int ret = -1;
ret = strcmp(str1, str2);
printf("ret= %d\n", ret);
if (ret>0)
else if (ret<0)
else
printf("new string:%s\n",str3);
return 0;}
一道c語言題目,高手解答詳細說明答案是什麼,並解釋原
答案ac a越界 不解釋了 c很明顯嘛,陣列名是什麼,是一個地址,是常量,常量可以自增麼,當然不可以,lz見過2 的麼,這個是錯的 d和e一個意思,只不過表達起來不同而已 a錯的,陣列定義的a 5 也就是a 0 a 4 c,a是首地址,a 也就是自加1,從a 0 指向了a 1 d,對指標接引用專,如...
c語言程式設計題目求高手解答,求高手解答c語言程式設計題目
int fun int x main printf sum d sum 這個題和我回答的另一個問題類似。fun int x 函式是遞迴函式。不理解的話可以看看遞迴方面的資料。或者繼續提問。希望能幫到你,你的採納是我答題的動力。int func int n sum sub return sum 對遞迴...
C語言題目,急求各位高手的解答
note your choice is c ide include stdio.h include malloc.h void main else if ch 9 ch 0 printf c ch 還有方法 很多api函式可以用咯 如 isdigit int ch 判斷這個字元是不是數字!還有 is...