c函数传返回值问题:两指针相减

本文探讨了C语言中两个指针相减的含义,即表示它们在内存中的相对距离。通过举例说明(&n - &m)/sizeof(int)表达式,阐述了其计算方式。并以自编的Strlen函数为例,解释了如何利用指针相减来确定字符串长度,从而理解函数返回值的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

两个指针相减表示的意思是两个地址在内存中间隔多少个指针类型的字节倍数

例如:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
 int *p = NULL;
 int *q = NULL;
 int n , m;
 printf("Input two numbers n and m:");
 scanf("%d%d",&n,&m);
 p = &n;
 q = &m;
 printf("the address of n is: %d\n",&n);
 printf("the address of m is: %d\n",&m);
 printf("the length of it is: %d\n",p-q);
 return 0;
 
}

实际上: (&n - &m)/sizeof(int) = p-q;


那么就可以理解函数返回值问题了!用自己编写的Strlen测字符串长度的函数来演示一下

int strlen1(char *s)
{
	char *p = s;
	while( *p )
	{
		p++;
	}
	return p-s; 
	
}

这样的函数返回的实际上是字符串的长度,因为p指针指到字符串尾,存的是最后一位的地址,s指针指在数组首位,存的是第一位的地址!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值