最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

P3.指針入門

2023-08-25 11:27 作者:創(chuàng)世十鷹  | 我要投稿

基本介紹:

本身指針需要放在后面講解,但是授課很快就會(huì)使用到指針的概念,因此先對 指針做一個(gè)入門講解(后面還會(huì)詳細(xì)講解的),簡單的說 指針表示一個(gè)地址,

舉例說明:

指針應(yīng)用案例:

1) 寫一個(gè)程序,獲取一個(gè)int變量num的地址,并顯示到終端?

2) 將num的地址賦給指針 ptr , 并通過ptr去修改num的值.?

3) 并畫出案例的內(nèi)存布局圖?

課堂練習(xí)(判斷程序是否正確) :

void main() {?

int a = 300;?

int *ptr = a; ?

}?

題1 (錯(cuò)誤: 把 int 賦給 int *)


void main() {?

int a = 300;?

float *ptr = &a;?

}?

題2(錯(cuò)誤:把 int 的地址賦給 float *


void main() {?

int a = 300; // a = 300?

int b = 400; // b = 400?

int * ptr = &a; // ptr 指向 a?

*ptr = 100; // a = 100 ?

ptr = &b; // ptr 指向 b?

*ptr = 200; // b = 200?

printf("\n a=%d,b=%d,*ptr=%d", a, b, *ptr);?

getchar();?

}?

//輸出什么內(nèi)容? a = 100, b = 200, *ptr = 200

指針細(xì)節(jié)說明:

1) 基本類型,都有對應(yīng)的指針類型, 形式為 數(shù)據(jù)類型 *,比如 int的對應(yīng)的指針就 是 int *, float 對應(yīng)的指針類型就是 float * , 依次類推。

2) 此外還有指向數(shù)組的指針、指向結(jié)構(gòu)體的指針,指向共用體的指針,后面我們 再講到數(shù)組、結(jié)構(gòu)體和共用體時(shí),還會(huì)詳細(xì)講解

我的源碼及注釋:

#include <stdio.h>

void main(){

int num = 33;

//定義一個(gè)指針變量(指針就是地址)

//名稱ptr,ptr是一個(gè) int* 類型

//ptr指向了一個(gè)int類型的變量的地址(也就是說ptr指向了num變量的地址)

//也就是說,ptr保存了int類型的變量num的地址

int *ptr = &num;


//如果要輸出一個(gè)變量的地址,使用格式%p

// &num 表示取出num這個(gè)變量對應(yīng)的地址

printf("num的值=%d? num的地址是%p\n",num,&num);//輸出 num的值=33? num的地址是012FF754


//指針變量,本身的地址是 &ptr

//指針變量中,存放的地址 ptr (ptr里面存放的就是地址)

//指針變量,指向的值 *ptr(ptr里面存放地址所指向的值)

printf("ptr指向的值是%d ptr的值=%p? ptr的地址是%p\n",*ptr,ptr,&ptr);//輸出 ptr指向的值是33 ptr的值=012FF754? ptr的地址是012FF748


//控制臺(tái)停留,等待輸入

getchar();

}


值傳遞和地址傳遞:

C語言傳遞參數(shù)(或者賦值)可以是值傳遞(pass by value),也可以傳遞 指針(a pointer passed by value), 傳遞指針也叫地址傳遞。?

1) 默認(rèn)傳遞值的類型:基本數(shù)據(jù)類型 (整型類型、小數(shù)類型,字符類型), 結(jié)構(gòu)體, ?共用體。?

2) 默認(rèn)傳遞地址的類似:指針、數(shù)組。


值傳遞和地址傳遞使用特點(diǎn):?

1) 值傳遞:將變量指向的存儲(chǔ)內(nèi)容,在傳遞/賦值時(shí),拷貝一份給接收變量。

2) 地址傳遞 也叫 指針傳遞:如果是指針,就將指針變量存儲(chǔ)的地址,傳遞給 接收變量,如果是數(shù)組,就將數(shù)組的首地址傳遞給接收變量。

我的源碼及注釋:

/*

C語言傳遞參數(shù)(或賦值),可以是值傳遞(pass by value),也可以是傳遞指針(a pointer passed by value),傳遞指針也叫地址傳遞。

1.默認(rèn)是傳遞值的類型有:基本數(shù)據(jù)類型(整形類型(int)、小數(shù)類型、字符類型),結(jié)構(gòu)體,共用體。

2.默認(rèn)傳遞地址的有:指針、數(shù)組。


值傳遞:將變量指向的存儲(chǔ)內(nèi)容,在傳遞或賦值時(shí),拷貝一份給接收變量。

所以當(dāng)修改拷貝后的值后,不會(huì)影響原來變量num的值 (int num = 3; int num2 = num; num2=666; 修改num2的值不會(huì)影響num)


地址傳遞 也叫指針傳遞:如果是指針,就是將指針變量存儲(chǔ)的地址,傳遞給接收變量。

如果是數(shù)組,就是將數(shù)組的【首地址】傳遞給接收變量

int num=100; int * p=&num; int *p2=p; *p2=666;

執(zhí)行說明:在內(nèi)存為num變量開辟一塊空間,為p指針開辟一塊空間(空間中存放num的地址),

為p2指針開辟空間(里面存放p的值(也是存放num的地址)),通過*p2修改為666,p2存放的地址是num的地址,所以*p2修改的是num的值

*/


#include <stdio.h>

void main(){

int num = 33;

int * p = &num;

int * p2 = p;


printf("num的值是%d? num的地址是%p\n",num,&num);

printf("p指針指向的值是%d? p指針的值(存放的值(地址))是%p? p指針本身的地址是%p\n",*p,p,&p);

printf("p指針指向的值是%d? p2指針的值(存放的值(地址))是%p? p2指針本身的地址是%p\n\n",*p2,p2,&p2);


*p2 = 666;


printf("num的值是%d? num的地址是%p\n",num,&num);

printf("p指針指向的值是%d? p指針的值(存放的值(地址))是%p? p指針本身的地址是%p\n",*p,p,&p);

printf("p指針指向的值是%d? p2指針的值(存放的值(地址))是%p? p2指針本身的地址是%p\n",*p2,p2,&p2);


getchar();

}


/*

輸出:

num的值是33? num的地址是0097FAEC

p指針指向的值是33? p指針的值(存放的值(地址))是0097FAEC? p指針本身的地址是0097FAE0

p指針指向的值是33? p2指針的值(存放的值(地址))是0097FAEC? p2指針本身的地址是0097FAD4


num的值是666? num的地址是0097FAEC

p指針指向的值是666? p指針的值(存放的值(地址))是0097FAEC? p指針本身的地址是0097FAE0

p指針指向的值是666? p2指針的值(存放的值(地址))是0097FAEC? p2指針本身的地址是0097FAD4

*/


課后練習(xí)題:

1) 試編寫程序?qū)崿F(xiàn)如下效果?

姓名 年齡 成績 性別 愛好?

xx? ? ?xx? ? ?xx? ???xx? ??xx?

要求: a、用變量將姓名、年齡、成績、性別、愛好存儲(chǔ)?

b、添加適當(dāng)?shù)淖⑨?

c、添加轉(zhuǎn)義字符


2) 編寫如下代碼,并看打印效果?

void main() {?

int number1; ?

int number2;

int number3;?

int number4 = 50;?

int number5;?

number1 = 10;?

number2 = 20;?

number3 = number1 + number2; //30?

printf("\nNumber3 = %d" , number3);// 30

number5 = number4 - number3;//20?

printf("\nNumber5 = %d" , number5);//20

getchar();?

}

課后練習(xí)題:

3) 實(shí)現(xiàn)兩個(gè)整數(shù)的加減乘除以及取余算法 定義兩個(gè)變量,分別保存鍵盤輸入的兩個(gè)整數(shù)【鍵盤輸入可選,如果不用輸入,可以直接用變量保存】 示例效果如下:?

請輸入第一個(gè)整數(shù):10?

請輸入第二個(gè)整數(shù):5?

*************************************?

????????????????小小計(jì)算器?

*************************************?

10 + 5 =15?

10 - 5 = 5?

10 * 5 = 50?

10 / 5 = 2

提示:用scanf語句獲取控制臺(tái)的輸入


4) 判斷一個(gè)整數(shù)是偶數(shù)還是奇數(shù) , if?

提示:if(判斷條件)

5) 總結(jié)學(xué)過的命令: 輸入、輸出、運(yùn)算、存儲(chǔ) [自己做]



我的源碼及注釋:

第1題:

#include <stdio.h>

void main(){

//使用字符數(shù)組代表字符串

char name[] = "張三";

short age = 18;

double score = 69;

char gender[] = "男";

char love[] = "籃球,music,澀澀";


printf("姓名\t年齡\t成績\t性別\t愛好\n%s\t%d\t%.2f\t%s\t%s\n",name,age,score,gender,love);

getchar();

}

3.

#include <stdio.h>

void main(){

int num1 = 0;//一般習(xí)慣賦初始值

int num2 = 0;

//鍵盤輸入

printf("請輸入num1的值: ");

scanf("%d",&num1);

printf("請輸入num2的值: ");

scanf("%d",&num2);

//加法

printf("%d + %d = %d", num1, num2, num1+num2);

//乘除法

printf("\n%d *?%d = %d",?num1,?num2,?num1*num2);//"\n"表示換行

printf("\n%d /?%d = %d",?num1,?num2,?num1/num2);

getchar();//過濾回車鍵

getchar();//暫??刂婆_(tái),等待輸入

}



4.

#include <stdio.h>

void main(){

int num = 10;

if(num % 2 == 0){

printf("%d 是偶數(shù)", num);

}else{

printf("%d 是奇數(shù)", num);

}

getchar();

}

P3.指針入門的評論 (共 條)

分享到微博請遵守國家法律
永济市| 眉山市| 葵青区| 无为县| 阿拉尔市| 晋城| 罗定市| 波密县| 英吉沙县| SHOW| 岳普湖县| 大荔县| 正定县| 文成县| 岳西县| 长治市| 许昌市| 浮梁县| 天门市| 扶沟县| 眉山市| 新安县| 托克逊县| 广宁县| 桃江县| 英山县| 华亭县| 丰镇市| 榕江县| 钟祥市| 利津县| 铜山县| 寻乌县| 虎林市| 绵竹市| 绥江县| 衡东县| 上犹县| 苏尼特右旗| 临猗县| 高邮市|