久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

C語言程序設計實驗十指針

時間:2019-05-12 06:54:41下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《C語言程序設計實驗十指針》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《C語言程序設計實驗十指針》。

第一篇:C語言程序設計實驗十指針

C語言程序設計實驗十——指針

【實驗1】

實驗題目:

1、下列代碼片段哪里有錯誤?

char var1,ptr1;

var1 = ?x?;

ptr1 = &var1;

2、設有如下定義:

Double var1, *ptr1, *ptr2;

Float* ptr3;

Int var2, *var4;

那么,var1, *ptr1, ptr2,*ptr2,ptr3,* ptr3,var2, var4,*var4個屬于哪種數據類型?

3、下列代碼片段在哪里有錯誤?

Char c = ? A ?;

Char * p;

p = c;或*p=?A?;

4、下列代碼片段的輸出結果是什么?

charvar1 = ? S ?;

charvar2 = ? X ?;

char*ptr1, *ptr2;

ptr1 = &var1;

ptr2 = &var2;

*ptr2 = *ptr1;

printf(“%ct%cn”, *ptr1, var2);

【實驗2】

實驗題目:輸入3個整數,按由小到大的順序輸出。

【實驗3】

實驗題目:輸入10個整數,將其中最小的數與第一個數對換,把最大的數與最后一個數對換。

實驗要求:寫3個函數:(1)輸入10個數;(2)進行處理;(3)輸出10個數。

【實驗4】輸入年和天數,輸出對應的年、月、日。

例如:輸入2000和61,輸出2000-3-1。

要求:都用指針實現。

第二篇:C語言程序設計實驗七:函數、數組、指針

C語言程序設計實驗七:函數、數組、指針

1、程序運行后,用戶任意輸入一個字符串,求出字符串長度,然后輸出字符串內容及個 數。不能使用strlen函數。

求字符串長度函數的函數原型必須如下:

int MyStrLenPt(char *str)

若輸入:nihao123!

則輸出:nihao123!:9 chars2、編寫一個對一維數組進行排序的程序。

要求:

寫兩個函數,一個主函數,一個sort函數。在主函數中完成數組的輸入和輸出,通過調 用sort函數對數組進行排序。

sort函數的原型為:voidsort(int*p, intn);

說明:

(1)請大家按學號來坐,便于考勤和管理。

(2)請珍惜寶貴的實驗時間!不要做與實驗無關的事情,比如聊QQ、上網或打游戲。

(3)直接把C語言代碼粘貼到相應的實驗題目下方,上交實驗報告時只交word文檔。

(4)文檔名稱:班級+學號后2位+姓名+實驗編號,例如11電1班12張山實驗七.doc。

第三篇:C語言程序設計教案 第十章指針

第十章 指 針

課題:

教學目的: 教學重點: 教學難點: 第十章 指針

§1-§2

1、了解指針與地址的概念

2、掌握指針變量的定義、初始化及指針的運算 指針變量的定義、初始化及指針的運算

指針的運算

步驟一 復習引導

指針是C語言的一個重要概念,也是C語言的一個重要特色。正確而靈活地運用它,可以有效地表示復雜的數據結構;能動態分配內存;能方便地使用字符串;有效而方便地使用數組;在調用函數時能得到多于1個的值;能直接處理內存地址等,這對設計系統軟件是很必要的。

指針的概念比較復雜,使用也比較靈活,因此初學者時常會出錯,務請在學習本章內容時十分小心。

步驟二 講授新課

§10.1 地址和指針的概念

計算機的主存儲器被分成一個個存儲單元,為了區分各存儲單元,要為每個存儲單元編號,這個編號即地址。

例:i =3;

或 scanf(“%d”, &i);

是將3送給 i所在的空間。

例:將3送到變量I_pointer所“指向”的單元(即I所標志的單元)。

所謂“指向”,是通過地址來體現的,I_pointer中的值為2000,它是變量I 的地址,這樣就在I_pointer和變量之間建立起一種聯系,即通過I_pointer能知道I的地址,從而找到變量I的內存單元。因而在C語言中,將地址形象化地稱為“指針”。

意思是通過它能找到以它為地址的內存單元。一個變量的地址稱為該變量的“指針”。

內存單元的地址和內存單元的內容是兩個不同的概念。

指針:就是地址,即內存單元的編號。

指針變量:用來存放另一變量的地址(即指針)的變量。

如:地址2000是變量 i的指針;i_pointer是指針變量,其值就是指針2000。

§10.2變量的指針和指向變量的指針變量

變量的指針就是變量的地址。

存放變量地址的變量是指針變量,用來指向另一個變量。

*i_pointer 表示 i_pointer 所指向的變量。

一、定義一個指針變量

指針變量的定義包含三個方面的內容:

⑴ 指針類型說明,即定義變量為一個指針變量 ⑵ 指針變量名

⑶ 變量值(指針)所指向的變量的數據類型。格式:

存儲類型

基類型

*指針變量名;例:int *pointer_1, *pointer_2;

float *pointer_3;

char *pointer_4;

二、指針的引用

指針變量有兩個運算符: & :取地址運算符

功能:取變量地址;單目,右結合。

* :取內容運算符(“間接訪問”運算符)

功能:只能跟地址,取變量所指向單元的內容;單目,右結合。

例:&a為變量a的地址,*p 為指針變量p所指向的存儲單元。

例:int a=5, *p=&a;

printf(“%d”, *p);main(){ int a,b;

int *pointer_1,*pointer_2;

a=100;b=10;

pointer_1=&a;

/*把變量a的地址賦給pointer_1*/

pointer_2=&b;

/*把變量b的地址賦給pointer_2*/

printf(“%d,%dn”,a,b);

printf(“%d,%dn”,*pointer_1, *pointer_2);} 輸出結果:100, 10

100, 10

評注:

1、在第3行雖然定義了兩個指針變量,只是提供了兩個指針變量,但并未指向任何一個整型變量。稱為指針“懸空”。

2、最后一行的*pointer_1和pointer_2就是變量a和b。

3、程序中兩處出現*pointer_1等,含義不同。程序第3行中的*pointer_1表示定義指針變量pointer_1。它前面的*只是表示該變量是指針變量。程序最后一行中的*pointer_1則代表變量,即pointer_1所指向的變量。

4、第5行中的pointer_1=&a 是將a的地址賦給指針變量pointer_1,而不是*pointer_1。

注意:不應寫成:*pointer_1=&a;

5、從上例中可看出,*pointer_1等價于a,*pointer_2等價于b,故凡在程序中出現a的地方均可用 *pointer_1 代替。所以,若有: int x, y, *px=&x;則下面的運算均是正確的: y=*px+1;

/*把 x 的內容加1 送變量y*/ printf(“%dn”, px);

/*打印當前x 的內容*/ d=sqrt((double)px);

/*把x的平方根送變量d*/ px=0;

/*把 x 置為0*/ *px+=1;

/*把 x 的值加 1*/(*px)++;

/*使 x 的值加 1*/ y=(*px)++;

/*即y=x, x++*/

6、假設px和py都被定義為指向int 對象的指針,而且px當前已指向了int 型變量x,則執行:

py=px;

/*把指針px的內容拷貝到指針py中去*/ 即

py和px 這兩個不同的指針指向了同一對象x

7、指針不是整數,不能將它與整數混為一談。例:

# include main(){ int x=100,*p;p=x;printf(“%d”, p);}

例如:

# include main(){ int a, b, *d=&a;

b = d;

printf(“%d n”, b);

……

}——編譯不出錯,但得不到希望的值

關于&和*運算符的說明:

假設已執行

pointer_1=&a;

1、&*pointer_1含義是什么?

&*pointer_1與&a相同,即變量a的地址。

2、*&a的含義是什么?

先進行&a運算,得a的地址,再進行*運算。

*&a、*pointer_1及變量a等價。

3、(*pointer_1)+ + 相當于a + +。

它與*pointer_1 + + 不同。

4、*pointer_1 + + 等價于*(pointer_1 + +),即先進行*運算,得到a的值,然后使pointer_1的值改變,這樣pointer_1不再指向a了。

例10.2:輸入a和b兩個整數,按先大后小的順序輸出a和b。

main(){ int *p1,*p2,*p, a, b;

scanf(“%d,%d”,&a,&b);

p1=&a;p2=&b;

if(a

{p=p1;p1=p2;p2=p;}

printf(“n a=%d,b=%dn”,a,b);

printf(“max=%d,min=%dn”,*p1,*p2);

} 運行情況: 5,9 a=5,b=9 max=9,min=5

三、指針變量作為函數參數

例10.3對輸入的兩個整數按大小順序輸出。先考察如下程序,看是否能得到預期的結果

swap(int p1, int p2){ int temp;temp = p1;p1 = p2;p2 =temp;} main(){ int a, b;

scanf(“%d, %d”, &a, &b);

if(a

printf(“n%d,%dn”,a,b);} 不能得到預期的結果。改為:

swap(int *p1,int *p2){ int temp;

temp = *p1;

*p1 = *p2;

*p2 =temp;} main(){ int a,b;

int *pointer_1,*pointer_2;

scanf(“%d,%d”,&a,&b);

pointer_1=&a;

pointer_2=&b;

if(a

swap(pointer_1,pointer_2);

printf(“n%d,%dn”,a,b);}

注:如果想通過函數調用得到n個改變的值,可以:

1、在主調函數中設n 個變量,用n個指針變量指向它們;

2、然后將指針變量作實參,將這n 個變量的地址傳給所調用的函數的形參;

3、通過形參指針變量,改變該n個變量的值;

4、主調函數中就可以使用這些改變了值的變量。

四、指針(變量)的初始化 指針置初始化值的格式:

存儲類型

基類型

*指針名=初始化值; 如:main()

{ static int a;

int *p=&a, *p1=p;

…… } 再如: int *p = 0;

int *p = NULL;

五、指針的運算

1、指針的算術運算

指針僅能進行加、減算術運算

如:p+n , p-n , p++ , p--, ++p ,--p

p-= n , p+= n , p1-p2 等 其中n是整數,p、p1、p2均為指針;

施行加法運算時,指針向地址增大的方向移動; 施行減法運算時,指針向地址減小的方向移動; 移動長度取決于指針的基類型,由計算機決定; 如有:int a,b,c, *pt =&a;

pt++ 則指針向后移動兩個字節; 再如:main()

{ int *p1,a=8,b=3;

p1=&a;

printf(“%d,%dn”,(*p1)++, *p1++);

printf(“%d,%dn”,a, *p1);

} 運行結果:3,8,4 注:p1+k = p1+k*sizeof(p1的基類型);

p1-k = p1-k*sizeof(p1的基類型);如:

strlen(char *s)

{ char *p=s;

while(*p!=?

主站蜘蛛池模板: 欧美肥婆姓交大片| 国产乱码一区二区三区免费| 国产精品女同久久久久电影院| 芙宁娜被??黄漫扒衣服| 久久精品国产99久久久小说| 国产精品成人一区二区三区| 一二三四在线观看视频韩国| 中日产幕无线码一区| 久久综合九色综合久99| 国产精品无码久久久久久| 欧美人与zoxxxx另类| 日本在线视频www鲁啊鲁| 人人妻人人做人人爽精品| 人妻人人看人妻人人添| 日本丰满熟妇videossex8k| 好男人在线社区www在线播放| 亚洲国产av无码男人的天堂| 极品少妇一区二区三区四区| 奇米影视色777四色在线首页| 久久精品国产自在天天线| 无码av免费毛片一区二区| 欧美老妇交乱视频在线观看| 无码国内精品久久人妻| 亚洲精品国产第一综合99久久| 人妻 丝袜美腿 中文字幕| 真人与拘做受免费视频| 亚洲偷自拍另类图片二区| 成人一区二区免费中文字幕视频| 日韩国产亚洲一区二区三区| 人人妻人人爽人人做夜欢视频九色| 国产男女无遮挡猛进猛出| 免费a级毛片在线播放不收费| 在线观看特色大片免费视频| 天堂av无码大芭蕉伊人av不卡| 日本高清va在线播放| 色吊丝永久性观看网站| 丰满岳妇乱一区二区三区| 妇女性内射冈站hdwwwooo| 少妇又色又紧又爽又刺激视频| 99热久久精里都是精品6| 色欲av蜜桃一区二区三|