不懂指针就毫无说本身学过C语言!

不懂指针就不用说本人学过C语言!

一、了解了指针,就控制了C语言的精华!总括机中多方面数目都放到内部存款和储蓄器中的,不一致的数据放到不一致的内部存款和储蓄器区域中。

内部存款和储蓄器角度未有数据类型,唯有2进制;数据以字节(七个人贰进制)为单位存取。

不一致数据类型占据差异的字节,三二十个人系统中:int 为5个字节,short为二个字节。

2、int i = 5;

printf(“%d\n”,&i);

int j=5;

printf(“%d\n”,&j);

三、&i代表:得到变量i所指向内部存款和储蓄器的地点,地址也是数字。

四、既然&是取地址,那么就足以用int类型存款和储蓄指针地址:

int iAddr = &i;

short、long、char等的地方都能够用int表示。然而假设用int表示各个指针,那么就不驾驭内部存储器中到底放的是什么样类型(其实内部存款和储蓄器中也不驾驭是怎么着项目,都以一批字节数据而已)。

一般用“类型指针”:int *iPtr = &i; printf(“%d\n”,iPtr);结果是同样的。

5、使用*取指针指向的内部存储器数据。 int j=*iPtr;

六、还足以透过指针修改变量的值:

int i = 5;

int *iPtr = &i;

*iPtr = 6;//差异就在于是或不是是评释,和放在=的左侧照旧左边无妨

printf(“%d\n”,i);

7、总结:

*的三个用途:

一)注明的时候用来声称指针变量: int *iPtr;

2)除了申明变量的时候,其余时候*用来表示收获指针指向的多少。

 

&用来博取变量的地方。

本节代码:

 1 #include <stdio.h>
 2 
 3 int main(int argc, char *argv[])
 4 {
 5     int i = 5;
 6     printf("%d\n", &i);
 7     int j = 10;
 8     printf("%d\n", &j);
 9     /*
10     int iAddr = &i;
11     printf("%d\n",iAddr);
12 
13     char c1 = 'a';
14     int iC1 = &c1;
15     printf("%d\n",iC1);
16     */
17     int* iPtr = &i;//Pointer=ptr。星号和类型在一起就是声明指针
18     printf("%d\n", iPtr);
19     int i1 = *iPtr;//取iPtr指针指向的内存中的数据
20     //类型化的指针,知道是从内存中取几个字节
21     //*放到指针变量前面代表“取指针地址指向的数据”
22 
23     printf("i1=%d\n", i1);
24 
25     *iPtr = 100;//把100存到iPtr指向的内存中
26     printf("i=%d\n", i);
27     /*
28     char c1 ='a';
29     char *c1p = &c1;
30     char c2 = *c1p;
31     */
32     return 0;
33 }