指针01
1.带星号“*”的类型
任何一种数据类型的变量前面加上一个或多个*,将变成带*的类型;
例如:int* x;
2.声明方式
推荐的方式:可以清晰的看到是一个带星号的变量
char* x;
short* y;
int* z;
float* f;
double* d;
Student* st;
不推荐的方式:不报错,但看起来不直观
char *x;
short *y;
int *z;
float *f;
double *d;
Student *st;
也可以一个或多个星号
char** x;
short*** y;
int** z;
float** f;
double***** d;
Student****** st;
总结:
1、带有*的变量类型的标准写法:变量类型* 变量名
2、任何类型都可以带* 加上*以后是新的类型
3、*可以是任意多个
3.赋值和宽度
char、short、int 类型变量的赋值:
带*类型的变量的赋值:只能用完整写法
数据宽度:
代码:
void fun()
{
char* x = (char*)5;
}
int main(int argc, char* argv[])
{
fun();
getchar();
return 0;
}
反汇编:
总结:
1、带*类型的变量赋值时只能使用“完整写法”.
2、带*类型的变量宽度永远是4字节、无论类型是什么,无论有几个*.
4.++和--操作
以short*类型的++为例:
++后增加了去掉一个*后变量short的宽度2,结果是20+2=22;
结论:
1、不带*类型的变量,++或者-- 都是加1 或者减1
2、带*类型的变量,可进行++ 或者 --的操作
3、带*类型的变量,++ 或者 -- 新增(减少)的数量是去掉一个*后变量的宽度
5.与整数加减
带一个星号类型的加法:
带多个星号类型的加法:
总结:
1、带*类型的变量可以加、减一个整数,但不能乘或者除.
2、带*类型变量与其他整数相加或者相减时:
带*类型变量 + N = 带*类型变量 + N*(去掉一个*后类型的宽度)
带*类型变量 - N = 带*类型变量 - N*(去掉一个*后类型的宽度)
6.相同类型相减
例如:
减完后的结果是int类型;
总结:
1、两个类型相同的带*类型的变量可以进行减法操作.
2、想减的结果要除以去掉一个*的数据的宽度.
7.相同类型比较
带*的变量,如果类型相同,可以做大小的比较。
例如:
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步