use*_*819 4 c memory arrays pointers memory-management
我如何比较固定大小的char数组中的两个内存地址?假设我有两个指针,每个指针指向数组中不同的内存位置:
char *ptr1; //points to a memory address in the array;
char *ptr2; //points to another memory address in the array;
Run Code Online (Sandbox Code Playgroud)
如果我这样做printf("%p\n%p\n", ptr1, ptr2);
,它将打印内存地址为十六进制.
output:
0x601240
0x601274
Run Code Online (Sandbox Code Playgroud)
我如何将这些存储到变量中并且它们是可比较的,以便我可以分辨出哪个存储器地址在数组中排在第一位.
另一个问题:如果我执行%d打印内存地址,而不是%p:
output:
6296128
6296180
Run Code Online (Sandbox Code Playgroud)
这些有效的内存地址(我的意思是这样安全使用)?
Yu *_*Hao 11
十六进制值只是指针中地址的表示.要比较两个指针(指向同一个数组的元素或一个超过数组末尾的元素),您可以使用类似的代码
if (ptr1 < ptr2)
Run Code Online (Sandbox Code Playgroud)
至于格式说明符,%d
不是指针(虽然在某些实现中,它打印正确的值,你不应该使用它),%p
用于void *
指针:
printf("%p\n%p\n", (void *)ptr1, (void *)ptr2);
Run Code Online (Sandbox Code Playgroud)