#include
#include
using namespace std;
int main()
{ char a[20]="you_are_a_girl";
char *p=a;
char **ptr=&p;
printf("p=%d\n",p);
printf("&p=%d\n",&p);
printf("*p=%c\n",*p);
printf("ptr=%d\n",ptr);
printf("&ptr=%d\n",&ptr);
printf("*ptr=%d\n",*ptr);
printf("&*ptr=%d\n",&*ptr);
printf("**ptr=%c\n",**ptr);
cout<*p
<7012076 &p=7012072
*p=y
ptr=7012072 &ptr=7012068
*ptr=7012076
&*ptr=7012072
**ptr=y
you_are_a_girl 0x6afee8 y
process returned 0 (0x0) execution time : 0.013
spress any key to continue.
還是分析那四個元素,注意指標型別跟指標所指元素型別的區別運算子&和*
&:原有型別加個:*
*:原有型別減個:*
int a=12; int b; int *p; int **ptr;
p=&a; //&a 的結果是乙個指標型別是 int*,指向的型別是
//int,指向的位址是a的位址。
*p=24; //*p 的結果,在這裡它的型別是 int,它所占用的位址是
//p 所指向的位址, 顯然, *p 就是變數 a。
ptr=&p; //&p 的結果是個指標,該指標的型別是 p 的型別加個*,
//在這裡是 int **。該指標所指向的型別是 p 的型別, 這
//裡是 int*。 該指標所指向的位址就是指標 p 自己的位址。
*ptr=&b; //*ptr 是個指標, &b 的結果也是個指標,且這兩個指標
//的型別和所指向的型別是一樣的,所以用&b 來給*ptr 賦
//值就是毫無問題的了。
**ptr=34; //*ptr 的結果是 ptr 所指向的東西,在這裡是乙個指標,
//對這個指標再做一次*運算,結果是乙個 int 型別的變數。
C指標操作(一)
1.指標的型別 2.指標所指向的型別 3.指標的值 或者叫指標所指向的記憶體區或位址 4.指標本身所佔據的記憶體區主要注意運算子優先順序 1.指標的型別 從語法的角度看,你只要把指標聲語句裡的指標名字去掉,剩下的部分就是這個指標的型別。這是指標本身所具有的型別。讓我們看看例一中各個指標的型別 1 i...
C語言 使用指標操作二維陣列
任務 1 用指向二維陣列元素的指標 include int main int p for p a 0 p 2 陣列指標 指向一維陣列的指標變數 include int main int i,j,p 4 定義乙個指向有四個元素的一維陣列的指標 for p a,i 0 i 3 i p i用於計算行數 p...
C和指標 二
1.printf 返回實際列印的字元數,包含轉移字元,如 n等 2.break continue只對最內層的迴圈起作用,無法使用break 和 continue 語句影響外層迴圈的執行。3.scanf 成功讀入返回1 失敗讀入返回0 如果遇到錯誤或遇到 eof return eof 1 4.swit...