社区
C语言
帖子详情
指针减指针的问题
csShooter
2007-07-31 08:53:06
char*a,*b;
a = "123456";
b = "123456789";
printf("%d\n%d\n",&a,&b);
printf("%d\n",b-a); /* 能猜出来b-a肯定是strlen(a)+1 */
-------------------------------------------
输出:
2293628
2293624
7
----------------
b-a 值为7可以理解。但为啥a的地址xx28减b的地址xx24只有4呢?
...全文
230
10
打赏
收藏
指针减指针的问题
char*a,*b; a = "123456"; b = "123456789"; printf("%d\n%d\n",&a,&b); printf("%d\n",b-a); /* 能猜出来b-a肯定是strlen(a)+1 */ ------------------------------------------- 输出: 2293628 2293624 7 ---------------- b-a 值为7可以理解。但为啥a的地址xx28减b的地址xx24只有4呢?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xuegao007
2007-07-31
打赏
举报
回复
这两个指针相减是没任何意义的,你做联系还可以。
指向同一元素的两个指针相减才有意义。
阿发伯
2007-07-31
打赏
举报
回复
printf("%d\n%d\n",&a,&b);输出的是a,b变量的地址,也就是a,b在栈中的地址,printf("%d\n%d\n", a, b); 才是字符串的地址
csShooter
2007-07-31
打赏
举报
回复
感谢楼上两位,正是我想要的结果!
lockhall
2007-07-31
打赏
举报
回复
printf("%d\n%d\n",a,b);
這樣就可以了。
星羽
2007-07-31
打赏
举报
回复
printf("%d\n%d\n",a,b);
csShooter
2007-07-31
打赏
举报
回复
看来需要学习的地方太多了!
printf("%d\n%d\n",&a,&b);
------------------------------
上面这句话其实我只想知道a的地址是多少,b的地址是多少?!
是不是有错?
superyys
2007-07-31
打赏
举报
回复
/* 能猜出来b-a肯定是strlen(a)+1 */
不要挑战编译器的极限,正常情况下是这样的,也不排除编译器做个什么特殊优化,把变量的位置变换一下. a,b是指针的指针,按照LZ的思维,程序相连的变量在分配内存时也连在一起,而在32位机器上,指针变量都是一个unsigned int,也就是占用四个字节,当然是4了,如果你在dos 622下编译,我敢肯定是2,在64位xp 中用64位编译器编译,我敢肯定是8
www_adintr_com
2007-07-31
打赏
举报
回复
char a[] = "123456";
char b[] = "123456789";
csShooter
2007-07-31
打赏
举报
回复
两个变量是紧跟着初始化地!!
中间没有定义其它变量。应该可以!
lockhall
2007-07-31
打赏
举报
回复
/* 能猜出来b-a肯定是strlen(a)+1 */
這個不是肯定。
C/C++
指针
经典资料大全
C/C++
指针
经典资料大全,十余部经典资料书籍,是您精通C
指针
的理想教程。
C/C++
指针
的13份资料
C/C++
指针
的13份资料 内容丰富,让编程人员不再害怕
指针
220个经典C语言源码
220个经典C语言源码 从简单到难的220来个经典C程序 第一部分 基础篇 001 第一个C程序 002 运行多个源文件 003 求整数之积 004 比较实数大小 005 字符的输出 006 显示变量所占字节数 007 自增/自
减
运算 008 数列求和 009 乘法口诀表 010 猜数字游戏 011 模拟ATM(自动柜员机)界面 012 用一维数组统计学生成绩 013 用二维数组实现矩阵转置 014 求解二维数组的最大/最小元素 015 利用数组求前n个质数 016 编制万年历 017 对数组元素排序 018 任意进制数的转换 019 判断回文数 020 求数组前n元素之和 021 求解钢材切割的最佳订单 022 通过
指针
比较整数大小 023 指向数组的
指针
024 寻找指定元素的
指针
025 寻找相同元素的
指针
026 阿拉伯数字转换为罗马数字 027 字符替换 028 从键盘读入实数 029 字符行排版 030 字符排列 031 判断字符串是否回文 032 通讯录的输入输出 033 扑克牌的结构表示 034 用“结构”统计学生成绩 035 报数游戏 036 模拟社会关系 037 统计文件的字符数 038 同时显示两个文件的内容 039 简单的文本编辑器 040 文件的字数统计程序 041 学生成绩管理程序 。。。。 。。。。
指针
的算数运算(
指针
加
减
数字、
指针
减
指针
)
1、
指针
加
减
数字是合法的
指针
加
减
数字表示的意义是
指针
在数组中位置的移动
指针
加
减
法规则
指针
加
减
法需要调整,调整的权重是
指针
本身去掉一个*,再求sizeof() eg: int main() { //
指针
减
数字 int *p = (int *)0x1010;//定义一个整型
指针
变量p赋值为16进制数0x1010 printf("%x\n",p-1);//100c 去掉一个*,属...
C语言--
指针
加
减
指针
加
减
一个整数
指针
变量的大小都是四个字节,
指针
加1,是加了一个
指针
所指向类型的大小,不是加
指针
变量的大小。 #include <stdio.h> int main() { int m = 0; int *p; p=&m; printf("%p%p",p,p+1);//p+1的意思是p+sizeof(*p)*1 return 0; }
指针
-
指针
1,
指针
不适合做加法运算,一般用于
减
法运算 2,
指针
做
减
法运算时,一定要指向同一个数组,相
减
结果是两个
指针
之间的元素的数目,而不是两个
C语言
70,020
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章