如何用fillchar給陣列賦值成1 pascal

2023-01-22 21:25:19 字數 3112 閱讀 4241

1樓:

這個貌似沒法賦值

因為fillchar 是對位操作(可以理解為每一個位元組)

longint是四個位元組

用fillchar是給這四個位元組都賦值為相同的值

但是要使longint=1,則前三個位元組為0,最後一個是1,

這樣不符合fillchar的操作,所以不能

fillchar要麼對longint賦值為0要麼是maxlongint(這兩種最常用)

要賦值為1的話就只能用迴圈了

完畢,給分吧

補充:回樓下

賦值maxlongint的方法是

fillchar(a,sizeof(a),127);或者fillchar(a,sizeof(a),$7f);

(其中a是longint陣列)

即把每一個位元組都賦值為最大值,那麼4個位元組都最大,加起來就是滿的,所以是maxlongint

同理,對於任何整型別陣列,照此法行都可以賦值為本型別的最大值(如integer是maxint;byte是127)

2樓:匿名使用者

longint沒法直接賦成1,

可以賦成0,也就是fillchar(a,sizeof(a),0);

或者可以賦成-1,也就是fillchar(a,sizeof(a),255);

pas_zoujp所言有誤,不可以賦maxlongint.

pascal是如何定義陣列的?

3樓:匿名使用者

首先,pascal中定義陣列有多種方法,在這裡我就介紹2中。

例,定義陣列名為:a;型別為:real;共計100個元素方法一:

type

arr=array[1..100]of real;

vara:arr;

方法二:

vara:array[1..100] of real;

方法一適用於需要作過程或者函式的引數時實用,方法二寫法簡單,一般你不用作過程或者函式的引數的話,建議使用方法二。

另附:string 英文中的意思是:串,線在pascal中是 字串的型別(pascal保留字),最多容納255個字元元素

可以看做是

type

string=array[1..255]of char;(字元)還有一種是ansistring 更長一些

fillchar() 在pascal 中的應用

4樓:匿名使用者

fillchar(arr,y,x):將陣列arr所佔用的記憶體y個位元組用x填充。通常與sizeof()函式連用。

sizeof()返回陣列所佔的位元組總數。fillchar(arr,sizeof(a),x):即可填充陣列所在的全部記憶體塊。

可以將該陣列所對應的位元組每個位元組都填充成x,達到集體賦值的效果。例如var a:array[1..

100000,1..100000] of byte;如果要將本陣列全部賦為1的話for迴圈需要10^10次,而fillchar(a,sizeof(a),1):就能瞬間賦值完。

將每個位元組變成00000001,也就是數字1。注意如果有的變數佔用了多個位元組的話比如longint,int64型別,fillchar(a,sizeof(a),1):就會將每個位元組都賦值為1,就變成了00000001 00000001也就是257

5樓:匿名使用者

fillchar,整體賦值原型:fillchar(arr,sizeof(arr),x):表示對arr陣列賦值為x

pascal 陣列全部清為-1,語句怎麼寫?fillchar(a,sizeof(a),-1), 為什麼不對?

6樓:

fillchar()的第三個引數是賦給每個位元組的值,sizeof()返回的是位元組數。-1自然用不了。一般不用fillchar去賦false及0以外的值。

如果陣列是longint形,可以用filldword(a,sizeof(a) div 4,-1);試試。雖然我沒試過,但書上說這個函式是四位一賦值。

7樓:匿名使用者

這有點問題 fillchar(a,sizeof(a),x) -1不能用 只有一個辦法 a[1]:=-1;a[2]:=-1....a[n]:=-1;

8樓:匿名使用者

不可能,fillchar(a,sizeof(a),x),只可用來清零

9樓:匿名使用者

因為那個-1不是數字意義的-1,就像如果打1的話會賦值為很大的數字一樣

10樓:

你的a陣列是integer還是longint也有原因的,integer的話就fill255還是$7我忘了你試試

11樓:匿名使用者

這個問題隨便是初學者都知道啦,fillchar(a,sizeof(a),255);這就是-1啦!

我用性命保證這是對的!

c++ 初始化陣列 相當於pascal裡的fillchar的那個東西c++怎麼寫?好像是個m開頭的東西。

12樓:匿名使用者

1全部清0通常用

int a[100] =;

類似這樣

或者memset(a,0, sizeof(a)); 這個有點類似於fillchar,按位元組對記憶體進行賦值,也就是fill char

中間的0可以是其他字元

陣列可以使用具體元素初始化

如int a[10] = ;

沒寫的就預設為0

也可以寫成

int b =;

按初始化元素的個數指定陣列的大小

字串陣列

可以char c[100]="123123";

也可以使用strcpy

方法多多,看你具體對應哪一種

13樓:匿名使用者

初始化陣列?

你是說動態陣列麼?

如果是的話就是包含#include

然後用malloc函式來動態分配記憶體。

希望我猜中了。

14樓:匿名使用者

c++沒有函式來初始化,你只有用迴圈語句了

c語言中怎麼給陣列賦隨機值,C語言中怎麼給陣列賦隨機值

看 include include include define n 9 void main for i 0 i 這裡注意一下rand 需要生成資料的範圍公式,即 範圍在 a,b 寫成 a i a rand b a 你只定義不賦值,像是int a 10 它裡面的數字就是隨機的,如果有規定範圍,就要像...

如何用matlab生成這樣的陣列 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5 6

其實你bai這個問題,du用程式設計是很簡單的。zhi但是如果單用daomatlab函式實現,我現在回只想到一個辦答法。比如 a 1 n 是你自己假定的長度 然後呼叫複製函式b repmat a,1,5 生成相同的矩陣,組合成為一個大矩陣。最後sort b,2 進行排序。就出來你想要的結果了。mat...

c語言中陣列能不能先定義然後直接賦給初值

你這個寫法存在兩個問題。陣列a沒有a 2 3 這個單元!行號是0,1,列號是0,1,2。int a 2 3 和a 2 3 是完全不同的概念!前者是定義陣列。在定義時賦值,相當於為整個陣列或部分陣列進行初始化。比如這裡int a 2 3 相當於給整個陣列賦了值。後者是陣列的一個單元。在定義之後賦值,只...