C/C++ 您当前所在位置:首页 > C/C++ > C语言指针探测(二)
C语言指针探测(二)
简介 指针在C中是一个至高点,如果指针没学好,那么C就相当于白学。我这里将学习笔记记录下来,一步一步了解指针到底是个什么东西,如何使用。
加上或减去一个整数
int main(int argc, char* argv[]) { char* a; short* b; int* c; a = (char*)10; b = (short*)10; c = (int*)10; a = a + 5; b = b + 5; c = c + 5; printf("%d %d %d", a, b, c); return 0; }
上面我分别加上了5,打印出来的结果15,20,30。这个和C语言指针探测(一)中的加加或减减本质一样,将类型去掉一个“*”,然后用去掉“*”的类型宽度乘以5,这才是真正要加的数量。
求差值
两个带“*”的类型是可以直接相减的,但有前提,必须两个类型完全一样,“*”前面的类型不同不能减,“*”的数量不一样也不能减。看下面的例子。
int main(int argc, char* argv[]) { char* a = (char*)200; char* b = (char*)100; int c = a - b; return 0; }
上面a和b类型完全一样,没有问题。像下面这样就不行。
int main(int argc, char* argv[]) { char* a = (char*)200; char** b = (char*)100; int c = a - b; return 0; }
下面这样也不行。必须完全一样。
int main(int argc, char* argv[]) { char* a = (char*)200; short* b = (char*)100; int c = a - b; return 0; }
那相同类型相减后结果是如何计算的呢。
int main(int argc, char* argv[]) { char* a = (char*)200; char* b = (char*)100; int c = a - b; return 0; }
上面的结果是100。但如果将char*类型改成char**,结果就是25,是用200-100的结果再除以将类型去掉一个“*”后的宽度4,就是这么来的。
注意相减的结果类型并不是原来的类型,而是变成了int。
做比较
带“*”类型还可以做比较。
int main(int argc, char* argv[]) { char* a = (char*)200; char* b = (char*)100; if (a > b) { printf(">"); } else { printf("<"); } return 0; }
结果输出“>”。
上一篇: 关闭网站响应头中PHP版本信息
下一篇: C语言指针探测(三)
猜你喜欢
点击排行
热门推荐
随机展示
站点信息
- 上线时间:2020年05月30日
- 网站程序:自建框架
- 博客模板:今夕何夕
- 文章统计:43篇文章
- 评论统计:0条评论
- 留言统计:0条留言
- 统计数据:百度统计