C基礎 初學指標

2021-09-07 05:06:18 字數 2236 閱讀 2774

一、指標簡介(任何指標變數在記憶體中佔八個位元組的儲存空間)

1.定義指標變數(格式):變數型別 *變數名;--定義乙個指向整形變數的指標  int *p;

//指標將變數a的位址賦給指標變數p

//定義乙個int型別的陣列

int ages[2] = ;//將陣列的位址賦給指標變數p

p = ages;  或者  p = &ages;

3.訪問:

*p = 11;

二、指標注意點:

1.任何指標變數都占用8個位元組的儲存空間

2.指標型別只能指向對應型別的變數,比如int *p只能指向int型別的資料,不然會出錯

float *p1 ; p1 = 100 ;--這是錯誤寫法

4.float f =1.5f ;

float *p = &f ;//這一句**其實做了2件事--1)定義了指標變數p;2)讓指標變數p指向了f

*p = 5.6f ;

三、指標和陣列

利用指標遍歷陣列元素,方法一:這種遍歷方式,指標的值從未變過

1

void

test3()2;

46int *p =ages;78

//p + 1;

//&ages[1]9//

p + 2;

//&ages[2]

10//

p + 3;

//&ages[3]

11//

p + i;

//&ages[i]

1213

for (int i = 0; i<4; i++)

1418

19//

這種遍歷方式,指標的值從未變過

20 printf("

%d\n

", *p);

2122 }

利用指標遍歷陣列元素,方法二:這種遍歷方式,指標的值一直在改變

1

void

test5()2;

45int *p =ages;67

for (int i = 0; i<4; i++)813

14//

這種遍歷方式,指標的值一直在改變

15 }

四、詳解指標的p+1

1.指標變數的+1並不是基本資料型別中簡單的+1;

2.p+1究竟是增加了多少,取決於指標的型別;

指標的p+1跟指標所指向的資料型別有關,如下:

char *    1

int *       4

double *    8

long *    8

五、指標與字串:重點--char *name = "hello" ;-->不可改變(可以理解為字串常量)        char name = "hello" ;-->可以改變(可以理解為字串變數)

1.利用陣列儲存的字串是可變的

1

void

test1()2;

910char *p =names;

1112 *(p + 3) = 'a'

;1314//

printf("%s\n", p + 2);

1516 printf("

%s\n

", names);

17 }

2.直接利用 指標變數指向的字串,是不可變的

1

void

test2()

2

3.學習指標之前的字串儲存

char name = "hello" ;

char names[2][10] = ;

4.學習指標之後的字串儲存:

char *name = "hello" ;

//指標陣列:陣列裡面裝的元素是指標

//整形陣列:陣列裡面裝的元素是整型資料

char *names[2] = ;

初學C語言 指標

運算子計算形式意義 px n 指標向位址大的方向移動n個資料 px n 指標向位址小的方向移動n個資料 px 指標向位址大的方向移動1個資料 px 指標向位址小的方向移動1個資料 px py 兩個指標之間相隔資料元數的個數 注 以指標型別為計算單元 若 int arr n int p arr 則有 ...

初學C之指標

指標即指標變數,在c語言中專門儲存系統分配的記憶體位址,我們可以通過這個位址找到記憶體分配的空間,從而進行對變數進行操作。乙個變數的位址稱為該變數的 指標 指標的形式 型別 變數名。int p表示了乙個名字為p,型別為int 的指標變數,實際用來存放int變數位址。p a是將變數a的位址給指標p。如...

c語言初學 const指標

注意 要在宣告的時候進行初始化 宣告的方式 型別名 const 變數名 1.不能再指向別的變數,指標的value不可更改 cpp include void main 報錯 error c2166 l value specifies const object 2.可以通過指標為那個變數賦值 變數值不是...