C语言数组指针和指针数组深入理解int (*p)[5];数组指针-----可以看成是*(P[5])

int a[10];  数组

int *p[5];  指针数组-----5个指针变量
int (*p)[5];数组指针-----可以看成是*(P[5])早期程序设计未来简化书写就简写成(*p)[5]------>这样就理解了只有一个指针

解答:

每一个指针指向一个指针变量共需10个,但此处只有一个a,所以不可以用指针数组

 
  • int *p=arr;

  • int *p=&a[0];//含义一样数组名代表首地址

#include<stdio.h>
int main()
{
    int a[10]={1,2,3,4,5,6,7,8,9,0};
    int *p;
    for(p=a ; p<(a+10) ; p++)
    {
        printf("%d ",*p);
    }
    printf("\n");
    return 0;
}

先让指针p指向a数组的首元素,打印*p(即指向数组的值),然后执行p++,使得p指向下一个元素,直到输出数组的十个元素为止。

for循环的第一句是初始化语句

for(单次表达式;条件表达式;末尾循环体

{//单次表达式在初始化过程中,只执行一次将数组名赋值给指针变量后等待循环P++------>指针地址递增

中间循环体;

}

#include <stdio.h>
 
const int MAX = 4;
 
int main ()
{
   const char *names[] = {
                   "Zara Ali",
                   "Hina Ali",
                   "Nuha Ali",
                   "Sara Ali",
   };
   int i = 0;
 
   for ( i = 0; i < MAX; i++)
   {
      printf("Value of names[%d] = %s\n", i, names[i] );
   }
   return 0;
}
Value of names[0] = Zara Ali
Value of names[1] = Hina Ali
Value of names[2] = Nuha Ali
Value of names[3] = Sara Ali

 指针数组每个变量都是指向char的指针

一个指向字符的指针数组来存储一个字符串列表-----????

发布了67 篇原创文章 · 获赞 2 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_42544051/article/details/104838783