當前位置:首頁 » 編程語言 » c語言深入指針
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言深入指針

發布時間: 2022-08-06 22:25:42

c語言指針用法

1、使用場景

使用指針時,必須將它指向一個變數的地址或者為它分配空間方能使用,如下所示:

#include<stdio.h>

#include <stdlib.h>

int main(int argc, char const *argv[])

{

int a[5]={0,1,2,3,4};

int *b,*d;

int c=2;

int *e=a; //e指向a數組首地址

//*b=2; 無法直接初始化

//printf("%d ", *b);

e=e+2; //移動兩個地址單元

d=&c; //d指向c的地址來表示值

c=4; //修改原c變數的值,d指針的值會發生改變

b=(int *)malloc(sizeof(int));//為b分配一個int型空間來直接存儲

*b=2;//分配空間後可以直接賦值了

printf("this is e,b,c,d :%d %d %d %d ",*e,*b,c,*d);

2、類型說明

(1)int *a :表示一個指向int型變數的指針,指向的是變數的地址單元

(2)char *b:表示一個指向char變數的指針

*a表示的是這個指針指向地址的值,a為此指針本身的地址,這點要明確,一般用*(a+1)、*(a+2)來表示值,如:

int nums[5]={0,1,2,3,4};

int *a=nums;

printf("%d %d %p ",*a,*(a+1),a);

(1)c語言深入指針擴展閱讀:

指針的運算

指針指向變數地址,若原變數的內容發生了變化,它本身也會發生變化,指針之間的運算一般為值運算和地址運算

(1)值運算:直接通過*運算方式,像a+*(a+1),結果為第一個元素與第二個元素相加。

int nums[5]={0,1,2,3,4};

int *a=nums;

(2)地址運算:通過a+i的方式.指針會指向a的下i個地址。

int nums[5]={0,1,2,3,4};

int *a=nums;

a=a+2;

printf("%d ",*a);

結果輸出2。

參考資料來源 :指針-網路

⑵ C語言中指針的作用是什麼

簡單地說指針就是指向變數和對象的地址。
指針的用途非常廣泛,比如如果你想通過函數改變一個變數的值,就得用指針而不能用值傳遞。還有在很多時候變數,特別是對象的數據量實在太大,程序員就會用指針來做形參,只需要傳遞一個地址就行,大大提高了效率。
以上還只是指針的初步應用,隨著你在C語言學習上的逐步深入,你會發現更多的用途的。

⑶ C語言指針基本概念及其指針變數的定義是什麼

在C語言里,指針是一組內存的頭地址,可以存一個數,一個字元,也可以是一個數組.
變數,就是像定義一個整型變數一樣的,定義的是一個指針型變數.

⑷ 誰有關於C語言指針深入了解的資料。帶我分享下。謝謝。

我有專門的指針教程文檔,提供郵箱

⑸ C語言指針的用法是什麼

指針是C語言中廣泛使用的一種數據類型。運用指針編程是C語言最主要的風格之一。

利用指針變數可以表示各種數據結構;能很方便地使用數組和字元串;並能象匯編語言一樣處理內存地址,從而編出精練而高效的程序。指針極大地豐富了C語言的功能。

學習指針是學習C語言中最重要的一環,能否正確理解和使用指針是我們是否掌握C語言的一個標志。

同時,指針也是C語言中最為困難的一部分,在學習中除了要正確理解基本概念,還必須要多編程,上機調試。只要作到這些,指針也是不難掌握的。

⑹ c語言指針是什麼意思!

指針其實是一個整形變數,與其它數據不同的是,它的作用是用來存儲其它變數的地址。指針(Pointer)是編程語言中的一個對象,利用地址,它的值直接指向(points to)存在電腦存儲器中另一個地方的值。由於通過地址能找到所需的變數單元,可以說,地址指向該變數單元。

因此,將地址形象化的稱為「指針」。意思是通過它能找到以它為地址的內存單元。

再打個比方:有個人讓你去麥當勞幫我買個雪糕,那麼麥當勞是這個變數a,但是那個人現在把麥當勞所在的地址寫在紙上給你,那麼這張紙就可以看做一個指向麥當勞的指針。

(6)c語言深入指針擴展閱讀

舉例說明:

int p; //這是一個普通的整型變數。

int *p; //首先從P 處開始,先與*結合,所以說明P 是一個指針,然後再與int 結合,說明指針所指向的內容的類型為int 型.所以P是一個返回整型數據的指針。

int p[3]; //首先從P 處開始,先與[]結合,說明P 是一個數組,然後與int 結合,說明數組里的元素是整型的,所以P 是一個由整型數據組成的數組 。

int *p[3]; //首先從P 處開始,先與[]結合,因為其優先順序比*高,所以P 是一個數組,然後再與*結合,說明數組里的元素是指針類型,然後再與int 結合,說明指針所指向的內容的類型是整型的,所以P 是一個由返回整型數據的指針所組成的數組。

int (*p)[3]; //首先從P 處開始,先與*結合,說明P 是一個指針然後再與[]結合(與"()"這步可以忽略,只是為了改變優先順序),說明指針所指向的內容是一個數組,然後再與int 結合,說明數組里的元素是整型的.所以P 是一個指向由整型數據組成的數組的指針。

int **p; //首先從P 開始,先與*結合,說是P 是一個指針,然後再與*結合,說明指針所指向的元素是指針,然後再與int 結合,說明該指針所指向的元素是整型數據。由於二級指針以及更高級的指針極少用在復雜的類型中,所以後面更復雜的類型就不考慮多級指針了,最多隻考慮一級指針。

int p(int); //從P 處起,先與()結合,說明P 是一個函數,然後進入()里分析,說明該函數有一個整型變數的參數,然後再與外面的int 結合,說明函數的返回值是一個整型數據。

Int (*p)(int); //從P 處開始,先與指針結合,說明P 是一個指針,然後與()結合,說明指針指向的是一個函數,然後再與()里的int 結合,說明函數有一個int 型的參數,再與最外層的int 結合,說明函數的返回類型是整型。

所以P 是一個指向有一個整型參數且返回類型為整型的函數的指針。

int *(*p(int))[3]; //可以先跳過,不看這個類型,過於復雜從P 開始,先與()結合,說明P 是一個函數,然後進入()裡面,與int 結合,說明函數有一個整型變數參數,然後再與外面的*結合,說明函數返回的是一個指針。

然後到最外面一層,先與[]結合,說明返回的指針指向的是一個數組。然後再與*結合,說明數組里的元素是指針,然後再與int 結合,說明指針指向的內容是整型數據.所以P 是一個參數為一個整數據且返回一個指向由整型指針變數組成的數組的指針變數的函數.

⑺ 如何理解c語言指針

指針與其他變數在計算機里都是數據,只不過指針存儲的是地址且其運算結果與數據類型有關。因此指針可以理解為與 int, float等並列的另一類型的變數,每一類型有變數有自己的運算規則。

⑻ 請問C語言中 指針是什麼有什麼作用請用通俗的語言解釋

通俗的說,就是你家的門牌號,

簡單地說指針就是指向變數和對象的地址。
指針的用途非常廣泛,比如如果你想通過函數改變一個變數的值,就得用指針而不能用值傳遞。還有在很多時候變數,特別是對象的數據量實在太大,程序員就會用指針來做形參,只需要傳遞一個地址就行,大大提高了效率。
以上還只是指針的初步應用,隨著你在C語言學習上的逐步深入,你會發現更多的用途的