课程目标:了解指针与数组对应的汇编内存地址。
课程内容:
通过一维数组实例了解指针与数组对应的汇编内存地址。
通过二维数组实例了解指针与数组对应的汇编内存地址。
http://edu.csdn.net/huiyiCourse/detail/134
1darray.cpp:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <typeinfo.h>
int main() {
int sa[4];
int *db;
int k;
for (k=0;k<4;k++) {
sa[k]=k;
}
for (k=0;k<4;k++) {
printf(" %3d",sa[k]);
}
printf("\n");
printf("typeid(sa ).name() is %s\n",typeid(sa ).name());
printf("\n");
db=(int *)malloc(4*sizeof(int));
if (NULL==db) return 1;
for (k=0;k<4;k++) {
db[k]=k;
}
for (k=0;k<4;k++) {
printf(" %3d",db[k]);
}
printf("\n");
printf("typeid(db ).name() is %s\n",typeid(db ).name());
printf("\n");
free(db);
return 0;
}
// 0 1 2 3
//typeid(sa ).name() is int [4]
//
// 0 1 2 3
//typeid(db ).name() is int *
//
//
2darray.cpp:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <typeinfo.h>
int main() {
int sa[3][4];
int **db;
int j,k;
for (j=0;j<3;j++) {
for (k=0;k<4;k++) {
sa[j][k]=j*10+k;
}
}
for (j=0;j<3;j++) {
for (k=0;k<4;k++) {
printf(" %3d",sa[j][k]);
}
printf("\n");
}
printf("typeid(sa[0] ).name() is %s\n",typeid(sa[0] ).name());
printf("typeid(sa ).name() is %s\n",typeid(sa ).name());
printf("\n");
db=(int **)malloc(3*sizeof(int *));
if (NULL==db) return 1;
for (j=0;j<3;j++) {
db[j]=(int *)malloc(4*sizeof(int));
if (NULL==db[j]) return 1;
}
for (j=0;j<3;j++) {
for (k=0;k<4;k++) {
db[j][k]=j*10+k;
}
}
for (j=0;j<3;j++) {
for (k=0;k<4;k++) {
printf(" %3d",db[j][k]);
}
printf("\n");
}
printf("typeid(db[0] ).name() is %s\n",typeid(db[0] ).name());
printf("typeid(db ).name() is %s\n",typeid(db ).name());
printf("\n");
for (j=0;j<3;j++) {
free(db[j]);
}
free(db);
return 0;
}
// 0 1 2 3
// 10 11 12 13
// 20 21 22 23
//typeid(sa[0] ).name() is int [4]
//typeid(sa ).name() is int [3][4]
//
// 0 1 2 3
// 10 11 12 13
// 20 21 22 23
//typeid(db[0] ).name() is int *
//typeid(db ).name() is int * *
//
//
课程内容:
通过三维数组实例了解指针与数组对应的汇编内存地址。
http://edu.csdn.net/huiyiCourse/detail/135
3darray.cpp:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <typeinfo.h>
int main() {
int sa[2][3][4];
int ***db;
int i,j,k;
for (i=0;i<2;i++) {
for (j=0;j<3;j++) {
for (k=0;k<4;k++) {
sa[i][j][k]=i*100+j*10+k;
}
}
}
for (i=0;i<2;i++) {
for (j=0;j<3;j++) {
for (k=0;k<4;k++) {
printf(" %3d",sa[i][j][k]);
}
printf("\n");
}
printf("----------------\n");
}
printf("typeid(sa[0][0]).name() is %s\n",typeid(sa[0][0]).name());
printf("typeid(sa[0] ).name() is %s\n",typeid(sa[0] ).name());
printf("typeid(sa ).name() is %s\n",typeid(sa ).name());
printf("\n");
db=(int ***)malloc(2*sizeof(int **));
if (NULL==db) return 1;
for (i=0;i<2;i++) {
db[i]=(int **)malloc(3*sizeof(int *));
if (NULL==db[i]) return 1;
for (j=0;j<3;j++) {
db[i][j]=(int *)malloc(4*sizeof(int));
if (NULL==db[i][j]) return 1;
}
}
for (i=0;i<2;i++) {
for (j=0;j<3;j++) {
for (k=0;k<4;k++) {
db[i][j][k]=i*100+j*10+k;
}
}
}
for (i=0;i<2;i++) {
for (j=0;j<3;j++) {
for (k=0;k<4;k++) {
printf(" %3d",db[i][j][k]);
}
printf("\n");
}
printf("----------------\n");
}
printf("typeid(db[0][0]).name() is %s\n",typeid(db[0][0]).name());
printf("typeid(db[0] ).name() is %s\n",typeid(db[0] ).name());
printf("typeid(db ).name() is %s\n",typeid(db ).name());
printf("\n");
for (i=0;i<2;i++) {
for (j=0;j<3;j++) {
free(db[i][j]);
}
free(db[i]);
}
free(db);
return 0;
}
// 0 1 2 3
// 10 11 12 13
// 20 21 22 23
//----------------
// 100 101 102 103
// 110 111 112 113
// 120 121 122 123
//----------------
//typeid(sa[0][0]).name() is int [4]
//typeid(sa[0] ).name() is int [3][4]
//typeid(sa ).name() is int [2][3][4]
//
// 0 1 2 3
// 10 11 12 13
// 20 21 22 23
//----------------
// 100 101 102 103
// 110 111 112 113
// 120 121 122 123
//----------------
//typeid(db[0][0]).name() is int *
//typeid(db[0] ).name() is int * *
//typeid(db ).name() is int * * *
//
//
59 个解决方案
#1
#2
#3
谢谢版主大大们推荐!Orz
#5
支持
#6
再多发点啊,支持
#7
#8
#9
点个赞,冒个泡。哈哈
#10
赵老师威武,支持
#11
顶
#12
#13
#14
#15
#16
#17
#18
#19
#20
回帖就有分拿?????
#21
#22
又开课了呀,不再回复存表情
#23
#24
抽空得学下汇编
#25
计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……
#26
老赵这是要当职业段子手...
#27
来晚了,还有分吗?
#28
没晚。计划最早6月29日结帖给分。
#29
赵中老师,我一度认为您老人家是csdn的智能计算机,每次都是简简单单一句话,没想到您老人家是真实存在的
#30
如果我真是csdn的智能计算机,那岂不是比微软的小冰还冰雪聪明,比谷歌的阿尔法狗还α?
#31
头一次得到赵老师回帖,心里那个激动啊,看来老师不仅兼具智慧还隐藏着深厚的幽默风趣
#32
本ID一向如此,还外加脸厚心黑。
#33
#34
#35
#36
http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/5.gif
#37
还能报名吗?
#38
坚决支持 尼古拉斯·赵四 老师!!!
回帖是个好习惯 ^_^
回帖是个好习惯 ^_^
#39
好久没有写过C的代码了。 学习了。
#40
用C 渐渐地少 了,参与一下
#41
赵老师的课坚决支持,赵老师,我爱你!!
#42
在CSDN是禁止搞基的。
#43
支持赵老师.
#44
#45
感快报名啊米娜桑
#46
点个赞
#47
支持赵老师!
#48
来自00:20:27的支持我是应该感动还是应该悲哀呢?
or
#49
#50
学习
#1
#2
#3
谢谢版主大大们推荐!Orz
#4
猛戳这里可以提前下载课程对应的PPT:
http://bbs.csdn.net/topics/391964266
http://bbs.csdn.net/topics/391964266
#5
支持
#6
再多发点啊,支持
#7
#8
#9
点个赞,冒个泡。哈哈
#10
赵老师威武,支持
#11
顶
#12
#13
#14
#15
#16
#17
#18
#19
#20
回帖就有分拿?????
#21
#22
又开课了呀,不再回复存表情
#23
#24
抽空得学下汇编
#25
计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……
#26
老赵这是要当职业段子手...
#27
来晚了,还有分吗?
#28
没晚。计划最早6月29日结帖给分。
#29
赵中老师,我一度认为您老人家是csdn的智能计算机,每次都是简简单单一句话,没想到您老人家是真实存在的
#30
如果我真是csdn的智能计算机,那岂不是比微软的小冰还冰雪聪明,比谷歌的阿尔法狗还α?
#31
头一次得到赵老师回帖,心里那个激动啊,看来老师不仅兼具智慧还隐藏着深厚的幽默风趣
#32
本ID一向如此,还外加脸厚心黑。
#33
#34
#35
#36
http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/5.gif
#37
还能报名吗?
#38
坚决支持 尼古拉斯·赵四 老师!!!
回帖是个好习惯 ^_^
回帖是个好习惯 ^_^
#39
好久没有写过C的代码了。 学习了。
#40
用C 渐渐地少 了,参与一下
#41
赵老师的课坚决支持,赵老师,我爱你!!
#42
在CSDN是禁止搞基的。
#43
支持赵老师.
#44
#45
感快报名啊米娜桑
#46
点个赞
#47
支持赵老师!
#48
来自00:20:27的支持我是应该感动还是应该悲哀呢?
or
#49
#50
学习