c语言函数打印零星,C语言零星笔记--(const、typedef)
好不容易偷閑,去逛了下論壇,這手賤的又點到了技術區(qū),看了個哥們的問題,就是const和typedef結合在一起會出現(xiàn)什么情況,那百度和360結合會是什么況。。。。
描述下問題:
typedef int* p2i;
int a = 2;
int b = 3;
int c = 4;
const int *pa = &a;
//不能用pa修改a的值,*pa = value
const p2i pb = &b;
//pb不能指向其他地址,pb = value
p2i const pc = &c;
//pc不能指向其他地址,同上。
這里涉及了兩點:(1)const的先左還是先右結合 (2)typedef的效果 (3)變量的類型
(1)const 向左走向右走:const的意義就是只讀,讀書,“只讀經典型”,就是const先向右走,如果右側有類型符,如int,float、、之流,就跟類型符結合。若沒有,則向左走,跟左側的*符結合。
(2)typedef與#define有區(qū)別,其中之一就是typedef封裝性,或者叫原子性,即通過typedef將目標封裝成整體,并起了個新的名字(典型貼牌山寨機)。但效用等價。
對于const? int? *pa = &a;
(3)變量的類型:就是這是個什么變量,找到變量,查看其右,若為(),則表示函數(shù),若為 [ ] 則為數(shù)組,查看其左,左側為 * ,則表示指向 XXoo 的指針。
則const int? *pa = &a,const與類型為int 的類型結合,pa與 *結合,綜合起來:pa是個指針,一個指向只讀整形的指針。即pa指向的內容不能變。但pa的指向可以變。
const?? p2i? pb = &b:pb右側無(),[ ],即pb非數(shù)組,也不是函數(shù),左側沒見到指針符號 *(被封裝了),故pb僅僅是個變量,類型為只讀p2i型的變量,將p2i的意義加進去,pb就是個只讀指針變量,即指針的指向不能改變,指向的地址里的內容可以改變。
對于p2i const? pc =&c,理解了typedef的封裝性,其實雷同于 int const??x?和const int?x ,所以,這種情況的意義同上。
總結
以上是生活随笔為你收集整理的c语言函数打印零星,C语言零星笔记--(const、typedef)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用c语言编写5颗骰子任意投掷总数为15
- 下一篇: c语言线性表的逆转,数据结构(C语言)设