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

时间:2018-02-19 16:14:20

标签: c

char mening[] = "tjena pa dig hog";

此字符串包含16个字符。然后我使用函数adresss()来查找该数组中随机字符的内存地址。函数adresss()返回包含地址的指针。地址是此时0x7ffeefbff5f9。 我现在需要知道地址指向的位置,例如它指向" t"在数组中的位置0,或者它可能指向" d"在第9位。我该怎么做?

编辑:

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);

这基本上就是我获得内存地址的方式。我想知道"我"是,在主要功能内只知道记忆地址。

1 个答案:

答案 0 :(得分:1)

如果你有两个指针,都指向同一个数组(或指向数组末尾之外的指针),那么你可以相互减去它们。

例如:

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);