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