c語(yǔ)言數(shù)組賦初值(c語(yǔ)言給數(shù)組賦值的方法)
- 夕逆IT
- 前端設(shè)計(jì)
- 2023-08-13
- 316
大家好,今天來為大家分享c語(yǔ)言數(shù)組賦初值的一些知識(shí)點(diǎn),和c語(yǔ)言給數(shù)組賦值的方法的問題解析,大家要是都明白,那么可以忽略,如果不太清楚的話可以看看本篇文章,相信很大概率可...
大家好,今天來為大家分享c語(yǔ)言數(shù)組賦初值的一些知識(shí)點(diǎn),和c語(yǔ)言給數(shù)組賦值的方法的問題解析,大家要是都明白,那么可以忽略,如果不太清楚的話可以看看本篇文章,相信很大概率可以解決您的問題,接下來我們就一起來看看吧!
如何給結(jié)構(gòu)體數(shù)組賦初值
舉例如下:
chara[10]
;1、定義的時(shí)候直接用字符串賦值chara[10]="hello";注意:不能先定義再給它賦值,如chara[10];a[10]="hello";這樣是錯(cuò)誤的!2、對(duì)數(shù)組中字符逐個(gè)賦值chara[10]={'h','e','l','l','o'}
;3、利用strcpychara[10];strcpy(a,"hello");易錯(cuò)情況:
1、chara[10];a[10]="hello";//一個(gè)字符怎么能容納一個(gè)字符串?況且a[10]也是不存在的!
2、chara[10];a="hello";//這種情況容易出現(xiàn),a雖然是指針,但是它已經(jīng)指向在堆棧中分配的10個(gè)字符空間,現(xiàn)在這個(gè)情況a又指向數(shù)據(jù)區(qū)中的hello常量,這里的指針a出現(xiàn)混亂,不允許!還有:不能使用關(guān)系運(yùn)算符“==”來比較兩個(gè)字符串,只能用strcmp()函數(shù)來處理。C語(yǔ)言的運(yùn)算符根本無法操作字符串。在C語(yǔ)言中把字符串當(dāng)作數(shù)組來處理,因此,對(duì)字符串的限制方式和對(duì)數(shù)組的一樣,特別是,它們都不能用C語(yǔ)言的運(yùn)算符進(jìn)行復(fù)制和比較操作。
直接嘗試對(duì)字符串進(jìn)行復(fù)制或比較操作會(huì)失敗。
例如,假定str1和str2有如下聲明:
charstr1[10],str2[10];利用=運(yùn)算符來把字符串復(fù)制到字符數(shù)組中是不可能的:
str1="abc";/***WRONG***/str2=str1;/***WRONG***/C語(yǔ)言把這些語(yǔ)句解釋為一個(gè)指針與另一個(gè)指針之間的(非法的)賦值運(yùn)算。但是,使用=初始化字符數(shù)組是合法的:
charstr1[10]="abc";這是因?yàn)樵诼暶髦校?不是賦值運(yùn)算符。
試圖使用關(guān)系運(yùn)算符或判等運(yùn)算符來比較字符串是合法的,但不會(huì)產(chǎn)生預(yù)期的結(jié)果:
if(str1==str2).../***WRONG***/這條語(yǔ)句把str1和str2作為指針來進(jìn)行比較,而不是比較兩個(gè)數(shù)組的內(nèi)容。
因?yàn)閟tr1和str2有不同的地址,所以表達(dá)式str1==str2的值一定為0。
C語(yǔ)言中數(shù)組的默認(rèn)初值問題
普通數(shù)組沒有賦初值,默認(rèn)的數(shù)組元素值是隨機(jī)數(shù),不是0。 如果在定義數(shù)組時(shí),數(shù)據(jù)類型前面加上關(guān)鍵字static,數(shù)組變成了靜態(tài)數(shù)組;或者把數(shù)組定義在函數(shù)的外面,成為全局變量數(shù)組,這時(shí)數(shù)組元素的值自動(dòng)賦值為0。 例子: ?#includeintmain(void) { intm=0; staticintn; ?inta=5,b=6,c=7,d=8; intk=((m=a>b)&&(n=c>d)) printf("k=%d,m=%d,n=%d\n",k,m,n); return0; ?} 輸出結(jié)果為:k=0,m=0,n=0; 當(dāng)變量用static修飾,但是沒有賦初始值的時(shí)候,編譯器會(huì)自動(dòng)給它賦值為0.但是如果不用static只是intn;這樣定義的話,這個(gè)值就是未知的,因?yàn)榫幾g器會(huì)給這個(gè)變量分配一塊4字節(jié)的地址空間,這個(gè)地址里面的值就是n的值。
如何給數(shù)組賦一系列初值
給數(shù)組賦初值的方法:
1、直接初始化:intarr[3]={1,2,3};
2、遍歷訪問初始化:for(i=0;i
c語(yǔ)言中可以連續(xù)賦初始值嗎
是的,C語(yǔ)言中可以使用連續(xù)賦值語(yǔ)法來為變量賦初始值。例如:
```c
inta=1,b=2,c=3;
```
這行代碼將同時(shí)為變量a、b、c賦值,分別賦值為1、2、3。這種語(yǔ)法可以簡(jiǎn)化代碼,提高可讀性。但需要注意的是,連續(xù)賦值語(yǔ)法只適用于同一類型的變量。例如,不能將int類型的變量和char類型的變量一起使用連續(xù)賦值語(yǔ)法。
定義一個(gè)3行4列的整型數(shù)組并賦初值,要求編程求出數(shù)組元素中的最大值,以及所在的行號(hào)和列號(hào)
產(chǎn)生1000以內(nèi)的隨機(jī)數(shù)來初始化數(shù)組元素。
最大值初始值用a[0][0],然后依次比較a[j][i],
記錄最大值的下標(biāo),存于row,col.
輸出最終的a[row][col].
#include<stdio.h>
#include<time.h>
intmain(){
inta[3][4],v;
inti,j,row=0,col=0;
srand(time(0));
for(j=0;j<3;j++)for(i=0;i<4;i++)a[j][i]=rand()%1000;
printf("array:\n");
for(j=0;j<3;j++){
for(i=0;i<4;i++)printf("%d",a[j][i]);
printf("\n");
}
for(j=0;j<3;j++)for(i=0;i<4;i++){
if(a[j][i]>a[row][col]){row=j;col=i;};
}
printf("\nmaxelemisa[%d][%d]=%d\n",row,col,a[row][col]);
}
C語(yǔ)言關(guān)于數(shù)組賦初值的問題char buff[10]={0}
charbuff[10]={0};是可以把這個(gè)數(shù)組的所有元素的賦值成0的。不信你用下面的代碼測(cè)試一下。
#include<stdio.h>voidmain(){charbuff[5]={0};inti;for(i=0;i<=4;i++){printf("%d",buff[i]);}}因?yàn)橛幸粭l規(guī)則:在數(shù)組定義的時(shí)候如果同時(shí)賦初值,未被賦值的元素都是0
關(guān)于c語(yǔ)言數(shù)組賦初值的內(nèi)容到此結(jié)束,希望對(duì)大家有所幫助。
本文鏈接:http://xinin56.com/qianduan/367.html