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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

C语言指针详解----指针声明定义赋值

發布時間:2024/4/18 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言指针详解----指针声明定义赋值 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
C語言的指針是讓新手很頭疼的事情,但是由于其太過于靈活,以至于可以很好得的解決一些復雜的問題,因此不得不掌握。我最近正在學習指針相關的內容,因此在這里做一個小的總結。本篇是不涉及到函數以及結構體等復雜的使用方法,僅僅討論一下指針的基本使用方法。

首先我們區分 * ?和 ?& ?,這兩個運算符, ?& 我們在scanf函數中經常使用。為了方便理解我們看下面這行代碼:

int *p =a;定義了一個指向a的整型指針,那么有p=&a ; ? ? ? ? ? ? ? ? ?*p =a;

即指針變量的值是地址(&a),*可以理解為取地址 (*p 可以看成 *(&a)取出&a這個地址中的值)。

下面我們看一個復雜點的代碼:

int n =0,*p = &n,**q = &p;

這里出現了二級指針,也就是所謂的“指向指針的指針”。 q是指向 int* 型數據的指針變量,首先 ?p ?= &n,這行代碼很好理解,后面的**q = &p可以拆開來看,首先聲明了一個?int* 型數據的指針變量 ?int **q;再給指針型變量賦值 即(*q) = &p;那么問題來了,對于指針的賦值應該如何理解呢?就以上面這行定義為例有下面四個賦值語句

p = 1; *q = 2;q = p;*p = 5;

我們先看 p = 1;這個賦值語句,根據我們上面所解釋的p =&a;我們知道指針變量的值應該是地址,而p = 1;直接將整數賦給了指針變量,編譯時會報錯

cannot convert from 'const int' to 'int *'

我們再看 *q = 2;根據上面的分析我們知道(*q) = &p;同第一句一樣的問題編譯時會報錯?cannot convert from 'const int' to 'int *'

再來看第三句 q = p; 這句很明顯的錯了,p是 int* 型數據 而 q是int**型數據,編譯時會報錯cannot convert from 'int ** ' to 'int *'

我們根據上述?p=&a ; ? ? ? ? ? ? ? ? ?*p =a;可以明顯的看到 ?*p = 5;這是一個正確的賦值語句。


總結

以上是生活随笔為你收集整理的C语言指针详解----指针声明定义赋值的全部內容,希望文章能夠幫你解決所遇到的問題。

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