`
jiq408694711
  • 浏览: 36543 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

数组和指针

 
阅读更多
#include <iostream>

using namespace std;

void testPointer(){
	int a[] = {1,2,3,4,5};
	int *p = a;		//本身就是int型指针
//	int *q = &a;	//转换成int型指针
	int *t = &a[0];	//本身就是int型指针
	p++;
//	q++;
	t++;
	printf("*p:%d\n",*p);	//2
//	printf("*q:%d\n",*q);	//2
	printf("*t:%d\n",*t);	//2
}

void testPointer2(){
	int a[] = {1,2,3,4,5};
	int *p = a+1;	//一维数组数组名字a表示数组中第一个元素(int)的地址
//	int *q = &a+1;	//在转换成int型指针之前的+1操作被解释为数组的长度
	int *w = &a[0]+1;	
	printf("%d\n",*p);		//2
//	printf("%d\n",*(q-1));	//5
	printf("%d\n",*w);		//2
}

void testPointer3(){
	int a[] = {1,2,3,4,5};
	const int *p = a;	//指向的元素是const int
	int const *q = a;	//和前者相同
	int *const t = a;	//const的指针,指向int
	p++;
	//(*p)++;	//compile error
	q++;
	//(*q)++;	//compile error
	(*t)++;
	//t++;		//compile error
}

void testPointer4(){
	int a[4][4] = {  
                  {1,2,3,4},  
                  {50,60,70,80},  
                  {900,1000,1100,1200},  
                  {13000,14000,15000,16000} }; 
	int (*p1)[4] = a;		//指针数组,
	int (*p2)[4] = &a[0];	//指针数组,分别指向数组a[0],a[1]...的地址
    int *p3 = &a[0][0];		//第一个元素的地址
	//数组p1的大小是4,所以是*(p3+1)
	cout<<*(p3+sizeof(p1)-3)<<endl;	//2

	//p2指向第一个数组a[0],减一就指向前一个数组的地址,*(&a[-1])就变成
	//前一个数组的第一个元素的地址,+16就变成13000的地址了。
	cout<<*(*(p2-1)+16)+2<<endl;	//13002

	//p1也是指针数组,指向a[0]的地址,然后+3就是指向a[3]的地址
	//*(&a[3])就变成了a[3]的第一个元素的地址,-2变成1100的地址
	cout<<*(*(p1+3)-2)+1<<endl;		//1101

	//一维数组数组名代表一个元素的地址,二维数组数组名代表第一个子数组的地址
	//所以a+1代表a[1]的地址,然后*(&a[1])代表a[1]的第一个元素的地址。-1变成4的地址。
	cout<<*(*(a+1)-1)<<endl;		//4
}

int main(){
	testPointer();
	testPointer2();
	testPointer3();
	testPointer4();
	return 0;
}
分享到:
评论

相关推荐

    数组和指针练习题目(精选)

    数组和指针练习题目(精选) 在编程语言中,数组和指针是非常重要的概念,它们的应用非常广泛,理解基础是非常必要的。本节将通过多种练习题目来加深对数组和指针的理解。 指针基础 指针是一种特殊的变量,它可以...

    数组与指针区别(很全面)

    本文旨在澄清关于数组名是否等同于指针这一常见的误区,并通过具体的代码示例来深入探讨数组和指针之间的关系及其差异。 #### 二、数组与指针的基本概念 1. **数组**: - 数组是一系列相同类型的数据项的集合。 ...

    数组和指针的区别(通俗易懂)

    ### 数组和指针的本质与区别 #### 一、引言 在计算机编程领域,数组和指针是程序员必须掌握的两大核心概念。虽然它们在某些情境下表现得极为相似,甚至可以相互转换,但本质上,数组和指针是完全不同的数据结构与...

    数组和指针的区别

    虽然数组和指针有相似之处,但在实际编程中需要注意以下几点: - **类型安全**:在使用指针时应确保指针的类型与所指向的数据类型一致,避免类型不匹配导致的问题。 - **内存泄漏**:使用动态内存分配时要注意及时...

    10 数组和指针.pdf

    10 数组和指针.pdf

    数组与指针的艺术.doc

    《数组与指针的艺术》是一篇深度探讨C/C++中数组和指针特性的文章,旨在帮助读者理解和掌握这两种核心概念。文章指出,数组和指针是C/C++语言的灵魂,它们提供了对底层操作的强大支持,是语言效率的保证。然而,由于...

    数组和指针学习资料

    在编程世界中,数组和指针是C/C++等低级语言的核心概念,它们的理解与熟练运用对于程序设计至关重要。本学习资料集包含了对数组和指针的深度解析,旨在帮助学习者彻底掌握这两个概念。 首先,我们来深入探讨数组。...

    C语言数组和指针

    **多维数组指针:** ```c int (*p)[3]; // p是指向含有3个整型元素数组的指针 int (*p)[3] = &a; // 将数组a的地址赋给p ``` **函数指针:** 函数指针是一种特殊的指针类型,它可以存储函数的地址。 ```c int add...

    数组和指针之间的区别与联系

    在C语言中,数组和指针是两个非常重要的概念,它们之间既有明显的区别,也有紧密的联系。数组是一种数据结构,而指针则是一种特殊的数据类型,用于存储内存地址。理解这两者的差异和关联对于深入学习C语言至关重要。...

    数组的指针和指向数组的指针变量

    数组的指针和指向数组的指针变量 数组的指针和指向数组的指针变量是编程语言中一个重要的概念。数组的指针是指向数组在内存中的起始地址,而指向数组的指针变量是指向数组元素的指针变量。 概念: * 数组的指针:...

    数组和指针使用及区别详解

    在编程中,数组和指针是两种非常基础且重要的概念,它们在处理数据时起着核心作用。数组是一组相同类型的元素的集合,通过索引来访问每个元素。指针则是一个变量,它存储的是内存地址,这个地址通常指向一个变量或...

    C++程序设计语言中数组和指针的探讨

    ### C++程序设计语言中数组和指针的探讨 #### 一、引言 在C++编程语言中,数组和指针是两个重要的基础概念,它们不仅被广泛应用于各种编程场景,也是理解更复杂数据结构(如链表、树、图等)的基础。正确理解和运用...

    C语言数组指针(指向数组的指针)_C语言中文网1

    总的来说,理解和熟练运用数组指针是掌握C语言的关键技能之一。它不仅能够帮助我们更有效地操作数组,还能在编写高效的代码时发挥重要作用。在深入学习C语言指针时,还会涉及到二级指针、指针数组、字符串指针、函数...

    C语言程序设计第4章数组和指针

    在C语言中,数组和指针是编程时非常重要的概念,尤其在处理大量数据或实现高效算法时。在第四章“数组和指针”中,我们主要探讨了以下几个知识点: 1. **数组的概念**: 数组是一组相同类型的变量,它们按照下标...

    浅议C语言中数组和指针的互操作

    浅议C语言中数组和指针的互操作浅议C语言中数组和指针的互操作浅议C语言中数组和指针的互操作浅议C语言中数组和指针的互操作

    数组和指针测试数据oj.rar

    在编程领域,数组和指针是C/C++等低级语言中的核心概念,它们在程序设计中扮演着至关重要的角色。数组是一种数据结构,可以存储同类型的数据集合,而指针则是存储内存地址的变量,它能够间接访问和操作数组元素。本...

    C++一维数组和指针的关系总结

    在C++中,一维数组和指针之间存在着密切的关系。本文将从不同角度对这一关系进行详细解释,并通过实例代码帮助理解。 #### 数组名作为地址 首先,我们需要明确的是,在C++中,数组的名字实际上就是该数组第一个...

    C数组和指针(学C必看)

    ### C数组和指针——深度解析 #### 第一章 数组和指针的概念剖析 **数组与指针的关系** 在C语言中,数组与指针之间的关系极为密切,以至于很多人在学习C语言时,往往是从数组入手进而逐渐深入理解指针的概念。...

Global site tag (gtag.js) - Google Analytics