Chinaunix首页 | 论坛 | 博客
  • 博客访问: 532847
  • 博文数量: 87
  • 博客积分: 1549
  • 博客等级: 上尉
  • 技术积分: 970
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-14 16:56
文章分类
文章存档

2013年(10)

2012年(28)

2011年(49)

分类: C/C++

2012-04-16 10:54:28

卓跃教育C语言强化之指针高级应用学习心得(01)

 指针是C语言的精华,不管你信不信,反正我是信了。指针是面向对象语言所没有的,这也就使得C语言有着不可替代的作用。上江老师的课,还真的有收获,这主要源于他讲的课有深度,那些东西都是在学校课上所接触不到的,废话不多说,下面看具体实例。

1.多维数组元素的地址

int b[5] = {1,2,3,4,5};

printf("%p %p\n",b,&b);

%p: 按地址格式输出

&b:数组名b本来就是一个地址,为何还可以再利用一次取地址符呢?有些不好理解,a[5][5]是二维数组,可以看做a[5]是一维数组,每个数组元素包含5个元素。a[5]是地址,但是指向列元素,a也是地址,但是指向行,即指针的类型改变了。因此,&b可以看作是类似二维数组,作&运算后,是指向行的。空口无凭,当然得用实例证明。

以上输出结果:

代码改成:printf("%p %p\n",b,&b 1);输出结果应该是相对b[0]地址偏移了20个字节。证据如下: 地址是16进制格式

扩展:

int x = 0x87654321;

printf("%p\n",(void *)x);

printf("%p\n",&x);

输出结果如下:

printf("%p\n",(void *)x); //打印x被转换为指针的地址,就是他的值

printf("%p\n",&x); //打印x的地址

2.main()函数传参

int main(int argc, char* argv[])

argc:表示参数的个数,注意这里有包含执行文件名

char* argv[]:是指针数组,它可以指向多个字符串

argcargv是形参,当然可以也可以是其他名字

main()函数是由操作系统调用的,那形参的值从何处得到呢?实际上实参和形参是和命令(程序名)一起给出的,如:

命令名  参数1 参数2 ……参数n

linux环境下,很容易:  ./filename 参数1 参数2 参数3……

但在windows下呢?

方法一:在运行里输入

注意:filename包含盘符、文件路径、文件名

方法二:vc6.0下,设置如下

课上的东西当然很多,书上有讲的东西我没有重述,那样没多少意义,我只是说了一些书上找不到的,但却又比较实用的东西

阅读(1934) | 评论(3) | 转发(1) |
给主人留下些什么吧!~~

幻界绮梦2012-08-13 16:58:25

Hello,最近发现一本好书,狂人C:程序员入门必备

背包包1112012-04-16 22:01:29

很不错,可以当成读书笔记,一直写下去。。。

小尾巴鱼1211212012-04-16 21:55:12

恩恩,指针的确是运用很广的,入门很容易,但是想要用好真的不是很简单的