日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

指针01 - 零基础入门学习C语言41

發布時間:2025/3/21 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 指针01 - 零基础入门学习C语言41 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第八章:指針01

?

讓編程改變世界

Change the world by program


?

指針啥玩意?似乎很神秘?

? 指針是C語言中的一個重要的概念,也是C語言的一個重要特色。 正確而靈活地運用它,可以有效地表示復雜的數據結構;能動態分配內存;能方便地使用字符串;有效而方便地使用數組…… 掌握指針的應用,可以使程序簡潔、緊湊、高效。可以說,不掌握指針就是沒有掌握C的精華。 ?

地址和指針的概念

為了說清楚什么是指針,必須弄清楚數據在內存中是如何存儲的,又是如何讀取的。 [caption id="attachment_141" align="aligncenter" width="300"] 地址和指針的概念[/caption] ? 內存區的每一個字節有一個編號,這就是“地址” 。如果在程序中定義了一個變量,在對程序進行編譯時,系統就會給這個變量分配內存單元。 在C語言中,對變量的訪問有兩種方式,直接訪問和間接訪問。 ?

關于直接訪問和間接訪問

? 打個比方,為了開一個A抽屜,有兩種辦法: 一種方法是:將A鑰匙帶在身上,需要時直接找出該鑰匙打開抽屜:取出所需的東西。 另一種辦法是:為安全起見,將該A鑰匙放到另一抽屜B中鎖起來。如果需要打開A抽屜,就需要先找出B鑰匙,打開B抽屜,取出A鑰匙,再打開A抽屜,取出A抽屜中之物。 ? 直接訪問如:a=5;? 系統在編譯時,已經對變量分配了地址,例如,若變量a分配的地址是2000,則該語句的作用就是把常數5保存到地址為2000的單元。 間接訪問如:scanf("%d",&a); 調用函數時,把變量a的地址傳遞給函數scanf,函數首先把該地址保存到一個單元中,然后把從鍵盤接收的數據通過所存儲的地址保存到a變量中。 ?

初識指針

在C語言中,指針是一種特殊的變量,它是存放地址的。假設我們定義了一個指針變量

int *i_pointer

用來存放整型變量 i 的地址。 可以通過語句:i_pointer =&i; [caption id="attachment_142" align="aligncenter" width="259"] 地址和指針的概念[/caption] ? 將i的地址(2000)存放到i_pointer中。這時, i_pointer的值就是(2000) ,即變量i所占用單元的起始地址。 要存取變量i的值,可以采用間接方式:先找到存放“i的地址”的變量i_pointer ,從中取出i的地址(2000),然后取出i的值3。 ? [caption id="attachment_143" align="aligncenter" width="249"] 地址和指針的概念[/caption] ?

初識兩個操作符“*”和“&”

? *:這玩意叫做取值操作符 &:而這玩意叫做取址操作符 如:

int i = 2000;

int *pointer;

pointer = &i;

printf("%dn", *pointer);

?

指針與指針變量

知道了一個變量的地址,就可以通過這個地址來訪問這個變量,因此,又把變量的地址稱為該變量的“指針” 。 C語言中可以定義一類特殊的變量,這些變量專門用來存放變量的地址,稱為指針變量。 ? 注意:指針變量的值(即指針變量中存放的值)是地址(即指針)。 請區分“指針”和“指針變量”這兩個概念。 ?

定義一個指針變量 "*"

下面都是合法的定義:

float *pointer_3; // pointer_3是指向float型變量的指針變量

char *pointer_4; // pointer_4是指向字符型變量的指針變量

[caption id="attachment_145" align="aligncenter" width="280"] 地址和指針的概念[/caption] ? 可以用賦值語句使一個指針變量得到另一個變量的地址,從而使它指向一個該變量。 ?

在定義指針變量時要注意兩點

一、指針變量前面的“*”,表示該變量的類型為指針型變量。 其一般形式為:類型說明符 *變量名; 其中,*表示這是一個指針變量,變量名即為定義的指針變量名,類型說明符表示本指針變量所指向的變量的數據類型。 例如: ?float *pointer_1; 指針變量名是 pointer_1 ,而不是 * pointer_1 。 ? 二、在定義指針變量時必須指定基類型。 需要特別注意的是,只有整型變量的地址才能放到指向整型變量的指針變量中。下面的賦值是錯誤的∶

float a;

int * pointer_1;

pointer_1=&a;

/* 將float型變量的地址放到指向整型變量的指針變量中,錯誤 */ ?

指針變量的引用 “&”

請牢記,指針變量中只能存放地址(指針),不要將一個整數(或任何其他非地址類型的數據)賦給一個指針變量,否則編譯器也會把該值當成 一個地址來處理。 C語言中提供了地址運算符&來表示變量的地址。 其一般形式為:&變量名; 如&a表示變量a的地址,&b表示變量b的地址。當然,變量本身必須預先聲明。 ?

代碼分析

[codesyntax lang="c"] #include <stdio.h>void main() { int a,b;int *pointer_1, *pointer_2;a=100; b=10;pointer_1 = &a;pointer_2 = &b;printf("%d,%dn",a,b);printf("%d,%dn",*pointer_1, *pointer_2); } [/codesyntax] ? [buy]?獲得所有教學視頻、課件、源代碼等資源打包?[/buy] [Downlink href='http://kuai.xunlei.com/d/LIHHCPRSYQNN']視頻下載[/Downlink]

轉載于:https://www.cnblogs.com/LoveFishC/archive/2011/01/22/3846024.html

總結

以上是生活随笔為你收集整理的指针01 - 零基础入门学习C语言41的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。