---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------
指针
只有传递地址在函数内修改形参的值才会影响到外面实参的值
因为要传入的是一个地址,所以只能用能够接收地址的变量来接收传入的地址
而指针就是专门用于接收(保存)地址的
指针变量定义格式:
变量类型* 变量名;
int* p;
变量类型:将来可以保存什么类型的变量的地址
* : 仅仅是一个象征(标志), 象征着这是一个指针变量
变量名: 区分和标记一个变量
指针变量是专门用来保存地址的,不能给指针变量赋值一个常量
int *temp=13;//错误写法
定义指针变量的时候,写的什么类型,将来指针变量就只能指向(保存)什么类型的变量(地址)
指针变量没有初始化,不要间接访问其存储空间
指针变量也可以定义的时候初始化
如果要定义一个指针保存一个变量的地址, 把变量的类型拷贝过来,然后加上一颗星
如果要定义个指针保存另一个指针的地址,把指针的类型和星拷贝过来,然后加上一颗星
int i =10;
int *ip = &i;
int **ipp = &ip;
int ***ippp = &ipp;
指针与数组
数据类型都有三个共同的特征
1.可以用来定义变量
2.可以用来作为函数的参数
3.可以用来作为函数的返回
数组作为函数参数的时候会自动转换为指针类型, 8个字节
数组元素的访问方式总结:
1.数组名[下标];
2.指针变量名[下标];
3.*(指针变量名 + i);
数组的地址就是所占用存储空间中字节地址最小的直接的地址
数组名就是数组的地址
注意: 指针是可以进行加法运算的, 但是和普通变量的加法运输不一样
指针变量加1是加指针变量类型所占用存储空间的字节数
指针与字符串
接收字符串的两种方式
1>用数组来接收一个字符串,这个字符串是一个可变字符串
char name[]="itcast";
2>用指针来接收一个字符串,这个字符串是一个字符串常量
char *name="itcast";
定义字符串的两种方式比较:
1.利用数组
特点:字符串中的内容是可以修改的
使用场合:字符串的内容需要经常修改的时候用数组
2.利用指针
特点:字符串中的内容是不可以修改的
使用场合:字符串中的内容不需要修改,或者字符串需要经常使用(性能比较高)
注意点: 不要返回数组保存的字符串给函数调用者,因为当函数执行完毕,数组就释放了
把指向函数的指针作为函数的参数提高了代码的可扩展性
变量类型 *变量名;
没有返回值没有参数的
有返回值没有参数的
有返回值有参数的
void (*pointer)();
(*pointer) 是固定写法,代表指针变量pointer将来肯定是指向一个函数
左边的void 代表指针变量将来要指向的函数没有返回值
右边的() 代表指针变量将来要指向的函数没有形参
p = test;
指针变量指向了test函数
注意:给指向函数的指针赋值,一定不要在函数名称后面加上括号,加上括号代表着将函数的返回值赋值给指针变量
---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------