指针
mylove10086
;ldfk
展开
-
C专家编程 九 什么时候数组与指针相同(一)
在实际应用中,数组和指针可以丸换的情形要比两者不吋彳 换的情形更为常见。让我们分别考虑“声明”和“使用”(使用它们传统的自:接作义)这两 种情况。声明本身还可以进一步分成3种情况:•外部数组(external array)的声明。•数组的定义(记住,定义是声明的一种特殊情况,它分配内存冷间,许可能提供一个 初始值)。•函数参数的声明。 所有作为函数参数的数组名总是原创 2016-11-12 20:20:14 · 431 阅读 · 0 评论 -
C专家编程 十 规则2: C语言把数组下标作为指针的偏移量(二)
把数组下标作为指针加偏移量足C语言从BCPL (C语言的祖先)继承过来的技巧。在人们的常规思维中,在运行时增加对C语言下标的范围检查是不切实际的。因为取下标操作只是表示将要访问该数组,但并不保证一定要访问。而且,程序员完全可以使用指针来访问数组,从而绕过下标操作符。在这种情况下,数组下标范围检测并不能检测所有对数组的访问的情况。事实上,下标范围检测被认为并不值得加入到C语言中。还有一种说法原创 2016-11-13 12:22:12 · 2607 阅读 · 0 评论 -
C专家编程 十三 数组和指针参数是如何被编译器修改的
“数组名被改写成一个指针参数”规则并不是递归定义的。数组的数组会被改写为“数 组的指针”,而不是“指针的指针”。 你之所以能在main()函数中看到char **argv这样的数,是因为argv是个指针数组(即 char *argv[])。这个表达式被编译器改写为指向数组第一个元素的指针,也就是一个指向指针的指针。如果argv参敎事实上被声明为一个数组的数组(也就是cha原创 2016-11-14 20:16:42 · 255 阅读 · 0 评论 -
C专家编程 十五 使用指针向函数传递一个多维数组
使用上一节所描述的笨拙方法,可以解决标记数组范围这个难题。但是还存在一个问题, 就是如何在函数内部声明一个二维数组参数,这才是真正的麻烦所在。C语言没有办法表达 “这个数组的边界在不同的调用中可以变化”这个概念。C编译器必须要知道数组的边界,以 便为下标引用产生正确的代码。从技术上说,也可以在运行时处理才知道数组的边界,而且很多其他语言就是这样做的,但这种做法违背了C语言的设计理念。原创 2016-11-15 10:57:22 · 496 阅读 · 0 评论 -
C++ primer 九 指针和 const
将const用于指针有一些很微妙的地方(指针看起来总是很微妙),我们来详细探讨一下。可以用两种不 同的方式将const关键字用十指针。第一种方法是让指针指向一个常最对象,这样可以防止使用该指针来修改所指.14的值,第二种方法是将指针本身声明为常最,这样可以防止改变指针指向的位置。下面来看细节。首先,声明一个指常量的指针pt:int age= 39;const int * p原创 2016-12-14 21:43:57 · 312 阅读 · 0 评论 -
C与指针 五 矩阵相乘
如果A是个x行y列的矩阵,B是个y行Z列的矩阵,把A和B相乘,其结果将是另一个\行2列的矩阵0。这个矩阵的每个元素是由下面的公式决定的: 结果矩阵中14这个值是通过2X-2加上-6X-3得到的。编写一个函数,用于执行两个矩阵的乘法。函数的原型应该如下:void matrix_multiply( int *ml, int *m2, int *r,int x, i原创 2016-11-22 15:13:16 · 654 阅读 · 1 评论