#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
《数组与指针的艺术》是一篇深度探讨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语言中数组和指针的互操作浅议C语言中数组和指针的互操作
在编程领域,数组和指针是C/C++等低级语言中的核心概念,它们在程序设计中扮演着至关重要的角色。数组是一种数据结构,可以存储同类型的数据集合,而指针则是存储内存地址的变量,它能够间接访问和操作数组元素。本...
在C++中,一维数组和指针之间存在着密切的关系。本文将从不同角度对这一关系进行详细解释,并通过实例代码帮助理解。 #### 数组名作为地址 首先,我们需要明确的是,在C++中,数组的名字实际上就是该数组第一个...
### C数组和指针——深度解析 #### 第一章 数组和指针的概念剖析 **数组与指针的关系** 在C语言中,数组与指针之间的关系极为密切,以至于很多人在学习C语言时,往往是从数组入手进而逐渐深入理解指针的概念。...