C语言快速入门9-指针
1.指针是什么?
2.定义指针
使用指针前,必须实际存在一个地址。
3.指针的使用
需要带上*的指针,才能准确完成赋值操作,否则指针变量只能变成赋值的地址,并没有改变原先的地址。
4.指针的算术(数组)
不加的算术,相当于数组下标。
加的算术,是直接操作元素值。
#include<stdio.h>intmain(void){intx[8]={1,2,3,4,5,6,7,8};intz[8]={2,3,4,5,6,7,8,9};inty[8]={4,5,6,7,8,9,10,11};int*zhizhen1=x;//数组名在大多数上下文中会退化为指向第一个元素的指针。*zhizhen1=*zhizhen1+1;// 指向的地址前进一位int*zhizhen2=&z[0];*zhizhen2=*zhizhen2+1;// 指向的地址的实际值加1int*zhizhen3=y;zhizhen3=zhizhen3+1;// 指向的地址前进一位//int *zhizhen3=&x; 有问题。x是一个数组,它的类型是 int[8]。当用在取地址运算符&时,&x的类型是指向数组的指针,即 int (*)[8]。//而zhizhen被声明为 int*,指向int的指针。类型不匹配.printf("指针zhizhen1的变量中存储的数组的起始地址:%d \r\n",zhizhen1);//6487504printf("指针zhizhen1的指向的内容值是:%d \r\n",*zhizhen1);//2printf("指针zhizhen2的变量中存储的数组的起始地址:%d \r\n",zhizhen2);//6487536printf("指针zhizhen2的指向的内容值是:%d \r\n",*zhizhen2);//3printf("指针zhizhen3的变量中存储的数组的起始地址:%d \r\n",zhizhen3);//6487572printf("指针zhizhen3的指向的内容值是:%d \r\n",*zhizhen3);// 5return0;}5.动态分配内存
传统的指针定义时,未初始化前,没有空间地址。
若是再定义数组之类的,存在占用空间,且不快捷。
使用malloc
