C指標操作(二)

2021-08-02 10:03:18 字數 1410 閱讀 8461

#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...