C語言- 指針和結(jié)構(gòu)數(shù)組_第1頁
C語言- 指針和結(jié)構(gòu)數(shù)組_第2頁
C語言- 指針和結(jié)構(gòu)數(shù)組_第3頁
C語言- 指針和結(jié)構(gòu)數(shù)組_第4頁
C語言- 指針和結(jié)構(gòu)數(shù)組_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

在本教程中,我們將學(xué)習(xí)在C編程語言中使用帶有結(jié)構(gòu)體變量數(shù)組的指針。因此,在之前的教程中,我們學(xué)習(xí)了如何為結(jié)構(gòu)體變量創(chuàng)建指針?,F(xiàn)在讓我們繼續(xù)創(chuàng)建一個結(jié)構(gòu)變量數(shù)組并通過指針變量使用它。創(chuàng)建結(jié)構(gòu)體變量數(shù)組在下面的示例中,我們考慮student在上一個教程中創(chuàng)建的結(jié)構(gòu),并創(chuàng)建一個std大小為3的學(xué)生結(jié)構(gòu)變量數(shù)組來保存三個學(xué)生的詳細(xì)信息。//

student

structurestruct

student

{

char

id[15];

char

firstname[64];

char

lastname[64];

float

points;};//

student

structure

variablestruct

student

std[3];我們可以將std數(shù)組變量表示如下。為結(jié)構(gòu)體創(chuàng)建指針變量現(xiàn)在我們將創(chuàng)建一個指針變量,它將保存學(xué)生結(jié)構(gòu)變量std的起始地址。//

student

structure

pointer

variablestruct

student

*ptr

=

NULL;//

assign

std

to

ptrptr

=

std;筆記!std是一個數(shù)組變量,數(shù)組變量的名稱指向內(nèi)存位置,因此,我們將其分配給結(jié)構(gòu)體指針變量ptr。通過指針訪問結(jié)構(gòu)體數(shù)組變量的每個元素為此,我們首先將指針變量設(shè)置ptr為指向std變量的起始內(nèi)存位置。為此我們寫了ptr=std;.然后,我們可以使用增量運算符來遞增指針變量ptr++,使指針指向結(jié)構(gòu)體數(shù)組變量的下一個元素,即從str[0]到str[1]。因為有三個學(xué)生,所以我們將循環(huán)三遍。因此,我們將指針變量遞增兩次。第一個增量將指針ptr從std[0]移動到std[1],第二個增量將指針ptr從std[1]移動到std[2]。為了重置指針變量ptr以指向std我們編寫的結(jié)構(gòu)變量的起始內(nèi)存位置ptr=std;。完整代碼#include

<stdio.h>int

main(void)

{

//

student

structure

struct

student

{

char

id[15];

char

firstname[64];

char

lastname[64];

float

points;

};

//

student

structure

variable

struct

student

std[3];

//

student

structure

pointer

variable

struct

student

*ptr

=

NULL;

//

other

variables

int

i;

//

assign

std

to

ptr

ptr

=

std;

//

get

detail

for

user

for

(i

=

0;

i

<

3;

i++)

{

printf("Enter

detail

of

student

#%d

",

(i

+

1));

printf("Enter

ID:

");

scanf("%s",

ptr->id);

printf("Enter

first

name:

");

scanf("%s",

ptr->firstname);

printf("Enter

last

name:

");

scanf("%s",

ptr->lastname);

printf("Enter

Points:

");

scanf("%f",

&ptr->points);

//

update

pointer

to

point

at

next

element

//

of

the

array

std

ptr++;

}

//

reset

pointer

back

to

the

starting

//

address

of

std

array

ptr

=

std;

for

(i

=

0;

i

<

3;

i++)

{

printf("

Detail

of

student

#%d

",

(i

+

1));

//

display

result

via

std

variable

printf("

Result

via

std

");

printf("ID:

%s

",

std[i].id);

printf("First

Name:

%s

",

std[i].firstname);

printf("Last

Name:

%s

",

std[i].lastname);

printf("Points:

%f

",

std[i].points);

//

display

result

via

ptr

variable

printf("

Result

via

ptr

");

printf("ID:

%s

",

ptr->id);

printf("First

Name:

%s

",

ptr->firstname);

printf("Last

Name:

%s

",

ptr->lastname);

printf("Points:

%f

",

ptr->points);

//

update

pointer

to

point

at

next

element

//

of

the

array

std

ptr++;

}

return

0;}輸出:Enter

detail

of

student

#1Enter

ID:

s01Enter

first

name:

YusufEnter

last

name:

ShakeelEnter

Points:

8Enter

detail

of

student

#2Enter

ID:

s02Enter

first

name:

JaneEnter

last

name:

DoeEnter

Points:

9Enter

detail

of

student

#3Enter

ID:

s03Enter

first

name:

JohnEnter

last

name:

DoeEnter

Points:

6Detail

of

student

#1Result

via

stdID:

s01First

Name:

YusufLast

Name:

ShakeelPoints:

8.000000Result

via

ptrID:

s01First

Name:

YusufLast

Name:

ShakeelPoints:

8.000000Detail

of

student

#2Result

via

stdID:

s02First

Name:

JaneLast

Name:

DoePoints:

9.000000Result

via

ptrID:

s02First

Name:

JaneLast

Name:

DoePoints:

9.000000Detail

of

student

#3Result

via

stdID:

s03First

Name:

JohnLast

Name:

DoePoints:

6.000000Result

via

ptrID:

s03First

Name:

JohnLast

Name:

DoePoints:

6.000000我們可以std如下表示內(nèi)存中的數(shù)組變量。注意事項!每個學(xué)生數(shù)據(jù)占用147字節(jié)的內(nèi)存。成員數(shù)據(jù)類型尺寸ID字符15字節(jié)名字符64字節(jié)姓字符64字節(jié)點漂浮4字節(jié)數(shù)組大小為3,總共147x3,即441字節(jié)分配給std數(shù)組變量。第一個元素std[0]獲取從1000到1146的內(nèi)存位置。第二個元素std[1]獲取從1147到1293的內(nèi)存位置。第三個元素std[2]獲取從1294到1440

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論