首页 > 其他分享 >指针数组和数组指针的区别

指针数组和数组指针的区别

时间:2023-01-31 10:27:47浏览次数:35  
标签:区别 int 元素 char 数组 printf 指针

指针数组和数组指针的区别

一、指针数组

指针数组是一个数组,每个数组元素存放一个指针变量。也就是说指针数组中的每一个元素都存放一个地址,相当于一个指针变量

例如: 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

相关文章