c语言指针类型运算
1.指针类型相减
结果会强转为int
char* x;
char* y;
x = (char*)20;
y =(char*)10;
int a = y-x;(结果会转化为整数 并且为2)
上面的例子结果为10 char是1个字节 10/1
int* x;
int* y;
x = (int*)20;
y = (int*)10;
int a = x - y;
上面的例子结果为2 int是4个字节 10/4
总结:
指针类型相减 结果会自动转化为整形,然后运算结果是转化为整形后除以去掉一个星号的宽度
2.指针类型相加
int* x;
int* y;
x = (int*)20;
y = x + 1;
printf("%d", y);
结果会变为24
int* x;
int* y;
x = (int*)20;
y = (int*)10;
int* c = x + y;
printf("%d", c);
编译不通过
总结
指针类型可以跟整数相加进行位移,结果是去掉一个星号后的符号长度
个人总结:
指针是内存区域的地址,里面指向的内容不一定多大,比如malloc 申请的一个内存块,
或者存储的是一个结构体,或者存储的是一个char或int 或者存的本身就是一个指针地
址(二级指针),要看长度必须要去掉一个星后观看长度