关于指针运用的一点总结
2014-10-11 12:07
621 查看
----------------------------
int *p,q; //此处只声明了p为一个指向整形变量的指针,q为整型变量
int* p,q; //同上
char *string
此处string为一个指针变量。
char **strings
此处strings为一个二级指针变量
string=*strings
此处string获得了一个地址,此地址是*strings,是strings指针所指向的。
------------------------------
二维数组arr[2][3]
arr是指向指针的指针(指针所储存的就是地址,所以某量的指针就是某量的地址)
i行j列的值
*(*(arr+i)+j) //arr+i是指向第i行首地址的指针,*(arr+i)即为第i行的首地址
*(*arr+3*i+j) //所以arr为指向第0行首地址的指针,*arr为第0行首地址
*(a[i]+j) //第i行的首地址为arr[i],则arr[0]为第0行首地址
a[i][j]
--------------------------------------
int array[10];
int *ap=array+2
此时ap代表array+2
*ap=*(array+2)=array[2]=ap[0]
*(ap+2)=*(array+4)=array[4]=ap[2]
*ap+2=array[2]+2
ap[-1]=*(ap-1)=array[1]
注意:array是个指针常量,对其进行array++运算是错误的。
------------------------------------------------
储存方式:
char keywords[]{
"do",
"for",
"if",
"register",
"return",
"switch",
"while"
};
char keywords[][9]{
"do",
"for",
"if",
"register",
"return",
"switch",
"while"
};
以上两种声明方式的储存方式不同,第一种是以连续的方式储存,第二种是以矩阵的方式储存。
-------------------------------------------------------
字符串常量实际上表示一个指针常量
例如:
"xyz"+1 //表示y的地址
*("xyz"+1) //表示字符y
"xyz"[1] //同样表示字符y
------------------------------------------------
int *p,q; //此处只声明了p为一个指向整形变量的指针,q为整型变量
int* p,q; //同上
char *string
此处string为一个指针变量。
char **strings
此处strings为一个二级指针变量
string=*strings
此处string获得了一个地址,此地址是*strings,是strings指针所指向的。
------------------------------
二维数组arr[2][3]
arr是指向指针的指针(指针所储存的就是地址,所以某量的指针就是某量的地址)
i行j列的值
*(*(arr+i)+j) //arr+i是指向第i行首地址的指针,*(arr+i)即为第i行的首地址
*(*arr+3*i+j) //所以arr为指向第0行首地址的指针,*arr为第0行首地址
*(a[i]+j) //第i行的首地址为arr[i],则arr[0]为第0行首地址
a[i][j]
--------------------------------------
int array[10];
int *ap=array+2
此时ap代表array+2
*ap=*(array+2)=array[2]=ap[0]
*(ap+2)=*(array+4)=array[4]=ap[2]
*ap+2=array[2]+2
ap[-1]=*(ap-1)=array[1]
注意:array是个指针常量,对其进行array++运算是错误的。
------------------------------------------------
储存方式:
char keywords[]{
"do",
"for",
"if",
"register",
"return",
"switch",
"while"
};
char keywords[][9]{
"do",
"for",
"if",
"register",
"return",
"switch",
"while"
};
以上两种声明方式的储存方式不同,第一种是以连续的方式储存,第二种是以矩阵的方式储存。
-------------------------------------------------------
字符串常量实际上表示一个指针常量
例如:
"xyz"+1 //表示y的地址
*("xyz"+1) //表示字符y
"xyz"[1] //同样表示字符y
------------------------------------------------
相关文章推荐
- C中关于一位数组与指针和二维数组与指针的一点总结
- 关于局部指针的一点总结
- 关于内存泄露及野指针的一点小总结
- 关于函数指针的一点总结
- 关于局部指针的一点总结
- 关于学习CCNA的一点经验总结
- 关于DNN Module开发学习以来的一点总结
- 关于对xmms安装过程的一点总结!
- 今天工作中关于下拉框的一点总结
- 关于指针的一点摘要
- 关于如何jar的一点总结
- 关于WebForm的编辑列ItemTemplate和EditItemTemplate的一点小总结
- 关于c与汇编混合编程的一点总结
- 关于连接池写法的一点总结(二)
- 关于C/C++中指针做形参的一点小分析
- 关于DNN Module开发学习以来的一点总结
- 关于用CSplitterWnd分割View的一点总结
- 关于连接池写法的一点总结(一)
- 关于PHP的i18n(国际化)的一点总结(1)----gettext部分
- vs2005中关于masterpage,Theme,skin的一点总结