使用内存地址从指针打印字符数组(字符串)C

使用内存地址从指针打印字符数组(字符串)C,c,C,此字符串包含16个字符。然后,我使用函数adress()查找该数组中随机字符的内存地址。函数adress()返回包含地址的指针。此时地址为0x7FFEEFBF5F9。 我现在需要知道地址指向什么位置,例如它指向数组中位置0处的“t”,或者它指向位置9处的“d”。我该怎么做 编辑: 这就是我获取内存地址的基本方法。我想知道“I”是什么,在主函数中只知道内存地址 如果有两个指针,都指向同一个数组(或指向数组末尾以外的一个),则可以将它们相减 例如: char* adresss(char mening

此字符串包含16个字符。然后,我使用函数
adress()
查找该数组中随机字符的内存地址。函数
adress()
返回包含地址的指针。此时地址为
0x7FFEEFBF5F9
。 我现在需要知道地址指向什么位置,例如它指向数组中位置0处的“t”,或者它指向位置9处的“d”。我该怎么做

编辑:


这就是我获取内存地址的基本方法。我想知道“I”是什么,在主函数中只知道内存地址

如果有两个指针,都指向同一个数组(或指向数组末尾以外的一个),则可以将它们相减

例如:

char* adresss(char mening[]){

   //Lots of code going on here

   return &mening[i];
}

int main(void){
   char mening[] = "tjena pa dig hog";
   char* ptr;
   ptr = adresss(mening);

   printf("%p\n", ptr);

函数的返回方式如下:return&mening[i];这将给出mening[]中位置i的地址我想再次使用内存地址查找i当数组
mening
的元素数为16时,请记住最后一个(索引
15
)是字符串终止符。@Someprogrammerdude.:数组的大小为
17
,索引15的大小为
g
。我想从给定的adress@coderredoc详细信息…:)%zu是什么意思?@J.Doe
“%u”
是打印一个
无符号int
z
修饰符用于
size\u t
参数。这意味着
“%zu”
size\u t
参数打印为无符号整数。有关更多详细信息,请参见例如。
char* adresss(char mening[]){

   //Lots of code going on here

   return &mening[i];
}

int main(void){
   char mening[] = "tjena pa dig hog";
   char* ptr;
   ptr = adresss(mening);

   printf("%p\n", ptr);
char mening[] = "tjena pa dig hog";
char *pointer_to_mening = &mening[10];  // Pointer to the eleventh character

// Should print 10 (which is the index of the eleventh character)
printf("The distance is %zu\n", pointer_to_mening - mening);