---------------------- IOS培训.期待与您交流! ----------------------
指针:用来存放地址
int *p; //定义了一个指针变量p (只能存储int类型的数据的地址)
p=&a; //将a的内存地址赋值给p
*p=10 //根据指针p存储的内存地址,访问数据,赋值为10。相当于a=10。
int *p=&a OK (int *相当于指针p的类型)
*p=&a NO
如果要指向指针:int **pp=&p;
类型+‘*’指针变量名
一个函数多个返回值可以用指针来实现
指针变量在64位编译下都占8个字节
为什么指针要分类型:用于取值和赋值
如果是int类型的,则从地址开始取4个字节
如果是char类型。则从地址开始取1个字节
指针和数组的关系:
指针指向数组第一个元素地址
指针变量+1,相当于指向数组的下一个元素
指针变量的值+多少,取决于指针类型,int类型+4
double类型+8,char类型+1.
也可以通过指针名[下标]来访问数组元素,前提是
指针名=数组名,为什么可以这样?
因为数组名存储的是数组首元素的地址
指针和字符串:
1.用char数组来定义一个字符串
char ch[]="abc" 是字符串变量
使用场景:字符串需要修改
2.用指针来定义一个字符串
char *ch="abc" 是字符串常量
使用场景:字符串不需要修改,且经常要使用
字符串常量存储在内存的常量区,并且同一个字符串常量只有一个,如果还有另一个指针定义了相同的字符串,则,这两个指针是指向同一个字符串的首字符的地址。
字符串数组指针数组:
char *ch[]={"as","df","ss"}
字符串输入: scanf("%s",字符数组名)
返回指针的函数:最常用的就是返回一个字符串
char * test()
{
return "abc";
}
指向函数的指针:
1.怎么定义一个指向函数的指针:
语法: 返回值类型(*指针名)(形参);
2.怎么指向函数:
指针名=函数名 函数名就代表该函数在内存中的地址,函数的地址赋值给指针。
3.怎么调用函数:
1.直接调用:函数名(实参)
2.指针调用:(*指针名)(实参)
3.指针调用:指针名(实参)