树欲静而风不止btpka3.blog.chinaunix.net
btpka3
全部博文(135)
2012年(29)
2011年(41)
2010年(26)
2009年(12)
2008年(9)
2007年(12)
2006年(6)
zhangdiv
hcu5555
jayflygo
韩仪ails
沐依静
jiangzhe
cheercho
shanggua
609854
lzyunv
格伯纳
yuanzh78
Otokaze
masterro
bcskydri
tyshan
wangyinh
oyjyb
分类: C/C++
2007-06-17 11:26:55
/* 该毕业了,总得把学过的知识总结一下了,这里就把C/C++的指针总结一下吧! btpka3@163.com 2007-6-17 11:22 am 有关指针的数据类型小结 定义 含义 int i; 定义整型变量i int *p; p为指向整型数据的指针变量 int a[n]; 定义整型数组,它有n个元素 int *p[n]; 定义指针数组p,它由n个指向整型数据的指针元素组成 int (*p)[n]; p为指向第二维含n个元数的二维数组指针变量 int f(); f为返回整形函数值的函数 int *p(); p为返回一个整形指针的函数,该指针指向整形数据 int (*p)(); p为函数指针,该函数返回一个整型值 int **p; p是一个指针变量,它指向整型数据的指针变量。 以下着重总结一下指针和数组的关系。 如果定义了一个二维数组 a[m][n],则 表示形式 含义 a 二维数组名,指向一维数组a[0],即第0行首地址 a[0], *(a+0), *a 第0行第0列元素地址 a+1, &a[1] 第1行首地址 a[1], *(a+1) 第1行第0列元素a[1][0]的地址 a[1]+2, *(a+1)+2, &a[1][2] 第1行第2列元素a[1][2]的地址 *(a[1]+2), *(*(a+1)+2), a[1][2] 第1行第2列元素a[1][2]的值 */ #include void testIntArr(); void testCharArr(); int main(int argc, char* argv[]){ testIntArr(); printf("\n"); testCharArr(); }; void testIntArr(){ int intArr_1[3] = {1,2}; //相当于 const int * intArr_1 = {1,2}; int * intArr_1_p = NULL; int intArr_2[3][4] = {{1,2,3},{4,5},{7}}; //二维整型数组 int (* intArr_2_p)[4] = NULL; int intArr_3[2][3][4] = {{{1,2,3,},{4,5},{7}}, {{1,2,3,},{4,5},{7}}}; int (* intArr_3_p)[3][4] = NULL; int i = 0, j = 0, k = 0; //一维整型数组 intArr_1_p = intArr_1; //OK 或者 intArr_1_p = & intArr_1[0]; printf("intArr_1 = {"); for(i=0; i<3; i++){ printf("%d,", intArr_1_p[i]); //可以直接把 intArr_1_p 当作数组来使用 } printf("\b};\n"); //二维整型数组 intArr_2_p = intArr_2; printf("intArr_2 = {"); for( i=0; i<3; i++){ printf("{"); for(j=0; j<4; j++){ printf("%d,", intArr_2_p[i][j]); } printf("\b},"); } printf("\b};\n"); //三维整型数组 intArr_3_p = intArr_3; printf("intArr_3 = {"); for(i=0; i<2; i++){ printf("{"); for(j=0; j<3; j++){ printf("{"); for(k=0; k<4; k++){ printf("%d,", intArr_3_p[i][j][k]); } printf("\b},"); } printf("\b}, "); } printf("\b\b};\n"); }; void testCharArr(){ char charArr_1[9] = "abcdefg"; char charArr_2[3][9] = {"abcdefg", "hijklmn", "opqrst"}; char charArr_3[2][3][9] = {{"abcdefg", "hijklmn", "opqrst"}, {"abcdefg", "hijklmn", "opqrst"}}; void * void_p = NULL; int i=0, j=0, k=0; //一维字符数组 (char *)void_p = charArr_1; printf("charArr_1 = \"%s\";\n",(char *)void_p); //二维字符数组 (char(*)[9])void_p = charArr_2; printf("charArr_2 = {"); for(i=0; i<3; i++){ printf("\"%s\",", ((char(*)[9])void_p)[i]); } printf("\b};\n"); //三维字符数组 (char(*)[3][9])void_p = charArr_3; printf("charArr_3 = {"); for(i=0; i<2; i++){ printf("{"); for(j=0; j<3; j++){ printf("\"%s\",", ((char(*)[3][9])void_p)[i][j]); } printf("\b}, "); } printf("\b\b}\n"); }; /* 运行结果: intArr_1 = {1,2,0}; intArr_2 = {{1,2,3,0},{4,5,0,0},{7,0,0,0}}; intArr_3 = {{{1,2,3,0},{4,5,0,0},{7,0,0,0}}, {{1,2,3,0},{4,5,0,0},{7,0,0,0}}}; charArr_1 = "abcdefg"; charArr_2 = {"abcdefg","hijklmn","opqrst"}; charArr_3 = {{"abcdefg","hijklmn","opqrst"}, {"abcdefg","hijklmn","opqrst"}} */
上一篇:孤芳自赏 -- 安身立命之本
下一篇:C/C++复习: 关于C++继承与多态的一句话总结
chinaunix网友2009-05-17 19:02:21
真巧,你也叫张亮亮啊,我也是阿,你写的文章不错,支持一下喽
登录 注册