#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;
}
分享到:
相关推荐
数组和指针在各类编程语言中,都很重要,数组应用很广泛,理解基础很必要
10 数组和指针.pdf
数组和指针的区别
如果这篇文章能够纠正许多中国程序员对数组名和指针的误解,笔者就不甚欣慰了。借此文,笔者站在 无数对知识如饥似渴的中国程序员之中,深深寄希望于国内的计算机图书编写者们,能以"深入探索"的思维方式和精益求精...
详细描述数组和指针的使用方法及各自优劣的地方。
数组和指针之间的区别与联系 数组和指针之间的区别与联系
C语言数组和指针的学习和教学
数组的指针和指向数组的指针变量数组的指针和指向数组的指针变量数组的指针和指向数组的指针变量数组的指针和指向数组的指针变量
数组和指针的学习资料,包括《彻底搞定C指针》、C语言指针精髓、C语言指针经验总结等等
C语言数组和指针详解,C语言的灵魂!总结详细,实例经典!
浅议C语言中数组和指针的互操作浅议C语言中数组和指针的互操作浅议C语言中数组和指针的互操作浅议C语言中数组和指针的互操作
C语言程序设计第4章数组和指针,C语言程序设计第4章数组和指针课件,C语言程序设计第4章数组和指针PPT
关于二维数组和指针的介绍,非常好! 二维数组a由若干个一维数组组成在C语言中定义的二维数组实际上是一个一维数组,这个一维数组的每一个成员又是一个一维数组。如以上定义的a数组,则可视a数组由a[0]、a[1]、a[2]...
C++一维数组和指针的关系总结
数组和指针 讲的通俗易懂,可以很好的加深对数组和指针理解,很应该看看,而且是免费的,值得一看
数组和指针.cpp
数组与指针的艺术 数组与指针的艺术
易语言数组转指针源码,数组转指针,子程序1,子程序2,子程序3,数组_整数转指针,数组_指针转整数,数组_文本转指针,数组_指针转文本,数组_字节集转指针,数组_指针转字节集,内存_申请,内存_释放,内存_取长度,内存_写入,...
对象数组和指针使用.cpp
详细分析C指针,详细介绍数组和指针《侃指针》