ptr - string
:所在内存地址相减,得数➗4(每个地址占4个字节大小
),得到指针ptr超前string的个数的大小
strchr
:返回字符在字符串中的地址信息,如没有返回NULL
#define SECOND_DEMO
#include <stdio.h>
#include <conio.h>
#include <string.h>
#pragma warning (disable:4996)
int main(void)
{
char string[17];
char *ptr;
char c = 'a';
strcpy(string, "This is a string");
ptr = strchr(string, c);
if (ptr)
{
//ptr为在字符串string中字符‘a'首次出现的地址信息
//string是数组的首地址,相当于string[0]
//ptr - string 得到的是字符'a'在字符串 "This is a string"中的位置编号信息
printf("The character %c is at position:%d\n", c, ptr - string);
}
else
{
printf("The character was not found\n");
}
/*
**getch与getchar基本功能相同, 差别是getch直接从键盘获取键值,
不等待用户按回车, 只要用户按一个键, getch就立刻返回,
getch返回值是用户输入的ASCII码,
出错返回 - 1.输入的字符不会回显在屏幕上.
getch函数常用于程序调试中,在调试时,
在关键位置显示有关的结果以待查看,
然后用getch函数暂停程序运行, 当按任意键后程序继续运行.**
*/
getch();
return 0;
}
验证地址-地址
一个int
值4个字节大小,a - b
的值 除以 4得到超前的位数
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <conio.h>
#include <string.h>
int main()
{
int a[5] = { 0,1,2,3,6 };
int b[6] = { 3,4,5,6,7,8 };
printf("%d\r\n", a);
printf("%d\r\n", (&a));
//上面两个printf是一样的
printf("%d\r\n", b);
printf("%d\r\n", (a - b));
//这个意思是a数组的首地址-b数组的首地址
return 0;
}