治愈罗小黑 发表于 2022-7-13 14:08:01

c语言s1e23指针数组和数组指针问题求助

#include <stdio.h>

int main()
{
      char *array = {"FishC", "Five", "Star", "Good", "WoW"};
      char *(*p) = &array;
      int i, j;

      for (i = 0; i < 5; i++)
      {
                for (j = 0; *(*(*p + i) + j) != '\0'; j++)
                {
                        printf("%c ", *(*(*p + i) + j));
                }
                printf("\n");
      }

      return 0;
}

数组指针*(*p) =&array。&array不是整个数组的位置吗?*p + 1时不应该会指向array数组后一个位置吗?

ba21 发表于 2022-7-13 22:03:01



                array       arrayarrayarrayarrayarray
        本身地址0018FF34    0018FF34, 0018FF38, 0018FF3C, 0018FF40, 0018FF44
        存放地址array = {00422044, 0042203C, 00422034, 0042202C, 00422020}; // 存放的是地址

      char *array = {"FishC", "Five", "Star", "Good", "WoW"};



*p 数组地址 array = 0018FF34
*p+0 第一个指针地址 = 0018FF34
*(*p+0) 获取地址0018FF34放存的值(地址)=00422044
*(*(*p+0)) 获取00422044地址处的值,%c 可输出 "FishC" 中的 F, *(*(*p+0)+1) == 'i'

xueCxueCxueJava 发表于 2022-7-13 23:33:14

{:10_327:}{:10_291:}

治愈罗小黑 发表于 2022-7-13 23:53:23

ba21 发表于 2022-7-13 22:03
*p 数组地址 array = 0018FF34
*p+0 第一个指针地址 = 0018FF34
*(*p+0) 获取地址0018FF34放存的 ...

明白了,谢谢

顶级太阳 发表于 2022-8-23 09:14:41

ba21 发表于 2022-7-13 22:03
*p 数组地址 array = 0018FF34
*p+0 第一个指针地址 = 0018FF34
*(*p+0) 获取地址0018FF34放存的 ...

学习了。这解释清晰明了。谢谢

15846762641 发表于 2022-10-4 12:04:14

ba21 发表于 2022-7-13 22:03
*p 数组地址 array = 0018FF34
*p+0 第一个指针地址 = 0018FF34
*(*p+0) 获取地址0018FF34放存的 ...

p是数组地址吧,*p不是等价于*p+0吗
页: [1]
查看完整版本: c语言s1e23指针数组和数组指针问题求助