指针数组和数组指针的区别
一、指针数组
指针数组是一个数组,每个数组元素存放一个指针变量。也就是说指针数组中的每一个元素都存放一个地址,相当于一个指针变量
例如: char *p[2];
中的 p 就是一个指针数组
注意:[ ]运算符的优先级高于*运算符
代码举例-01:
#include <stdio.h>
int main(void)
{
char str_01[] = {"《C程序设计》"}, str_02[] = {"《算法与数据结构》"};
char *p[2];
p[0] = str_01;
p[1] = str_02;
for(int i = 0; i < 2; i++)
{
printf("第%d本书:%s\n",i+1,*(p+i));
}
return 0;
}
代码举例-02:
#include <stdio.h>
int main(void)
{
char *p[2] =
{
"《C程序设计》",
"《算法与数据结构》"
};
for(int i = 0; i < 2; i++)
{
printf("第%d本书:%s\n",i+1, *(p+i)); //p+i表示数组第i个元素的地址,*(p+i)表示第i个元素的值
}
return 0;
}
代码举例-01 和 代码举例-02 等价
程序运行结果:
二、数组指针
数组指针是一个指针,指向拥有n(n>1)个元素的数组
例如:int (*p)[5];
中的 p 就是一个数组指针
代码举例:
#include <stdio.h>
int main()
{
int temp[5] = {1, 2, 3, 4, 5};
int(*p)[5] = &temp;
for (int i = 0; i < 5; i++)
{
printf("%d ", *(*p + i));
}
printf("\n");
return 0;
}
标签:区别,int,元素,char,数组,printf,指针
From: https://www.cnblogs.com/caojun97/p/17077940.html