1樓:劉文正粉絲
首先說一下,你這不是c語言,是c++
問題一:這個就是問題二的內容了.p指向的是a,而p是一個地址.c語言輸出一個字串不是靠一個實際的資料輸出的,而是靠著實際資料的首地址輸出的.
問題二:char *ch = "aadsf";你要知道,一個字串的值是這個臨時值的首地址,也就是a的地址.而你又把這個地址給儲存了,所以"aadsf"也被儲存了.
也就是說,當電腦執行過char*ch="aadsf"後,記憶體中會多出9個位元組的記憶體空間.其中4個位元組儲存著"aadsf"的首地址,另5個位元組儲存著"aadsf"
問題三:p指向一個變數,在p前面加一個*,就等價於這個變數.
2樓:匿名使用者
1、指標可以在初始化時賦初值,char *p = "a miss"; //這個初始化過程,是將指標cp指向字串的首地址,而並不是傳遞字串的值。因為,在c語言裡面,沒有整體處理一個字串的機制
所以*p 輸出的是a
2、字串常量傳遞的是它的首地址,不可以通過*p修改該字串的值,因為該字串為常量,而它只是簡單的將指標指向該字串常量
3樓:窮醜矮基洩男
第一個程式裡面,字元型指標p指向字串「a miss」。在記憶體地址來看,就是p這個指標,指向了字串「a miss」的第一個字元。*p代表的是指標p所指向的字元a,所以cout輸出了a。
c++中,你使用的標準庫中的i/o類對"<<"操作符進行了過載,因此在遇到字元型指標時會將其當作字串名來處理,輸出指標所指的字串,所以輸出完整的字串a miss。
當然,對於整形變數int來說,cout能夠輸出你想要得到的地址。
C語言的指標問題,C語言的一個指標問題。。
指標做加法和減法是按其指向的型別來的,char 加1是往後移動一個char那麼長的位置,long 加1是往後一定一個整型那麼長的位置,這裡4個char才有一個long那麼長 具體你可以用sizeof輸出看 所以q是long q 往後移動了4個char,應該指向e的位置 q經過q long p強制型別...
關於C語言指標問題,C語言指標的賦值問題
飛翔的蠍子大叔 關於int p1 123這個問題我看了很多資料,在這裡我發表一點看法,該問題非常好,這是c語言需要規範的地方。int p1 123 是非法操作,指標表示地址,地址 123?我是沒有見過這種操作。地址一般用二進位制 八進位制 十六進位制表示,123表示地址根本就是扯淡!這個語句的目的就...
經典的c語言指標問題題目,一個經典的c語言指標問題題目
for p m 1 p 其中的p m 1並不改變p的值,所以p仍然指向a 0 因此,多加了a 0 和a 1 其中的p m 1並不改變p的值,所以p仍然指向a 0 因此,多加了a 0 和a 1 如果按我說的是 p a m 1 那麼p a 3 1 a 2,也就是說p從a 2 開始加,a 2 是3,從3開...