2018-11-13 16:05
⁄ 工业·编程
⁄ 共 1414字
int main()
{
char a[5]={'A','B','C','D'};
char (*p3)[5] = &a;
char (*p4)[5] = a;
return 0;
}
上面对p3 和p4 的使用,哪个正确呢?p3+1 的值会是什么?p4+1 的值又会是什么?毫无疑问,p3 和p4 都是数组指针,指向的是整个数组。
&a 是整个数组的首地址,a是数组首元素的首地址,其值相同但意义不同。在C 语言里,赋值符号“=”号两边的数据类型必须是相同的,...
c++, 数组阅读全文
2016-06-15 22:57
⁄ 工业·编程
⁄ 共 3275字
0长度的数组在ISO C和C++的规格说明书中是不允许的,但是由于gcc 预先支持C99的这种玩法,所以,“零长度数组”在gcc环境下是合法的。
先看下面两个例子。
pzeroLengthArray.c
[cpp] view plain copy
#include <stdio.h>
struct str
{
int len;
char *s;
};
struct foo
{
str...
数组阅读全文
2016-06-14 22:53
⁄ 工业·编程
⁄ 共 2687字
首先,我们要知道,0长度的数组在ISO C和C++的规格说明书中是不允许的。这也就是为什么在VC++2012下编译你会得到一个警告:“arning C4200: 使用了非标准扩展 : 结构/联合中的零大小数组”。
那么为什么gcc可以通过而连一个警告都没有?那是因为gcc 为了预先支持C99的这种玩法,所以,让“零长度数组”这种玩法合法了。关于GCC对于这个事的文档在这里:“Arrays of Length Zero”,文档中给了一个例子(我改了一下,改成可以运行的了...
数组阅读全文
2013-11-19 23:02
⁄ 工业·编程
⁄ 共 2095字
今天看见了四种方式://夜晚回来后,又仔细查了资料发现,这个问题还真是个问题,我总结了下总共有八种方式,这里再继续添加四种,重在理解原理。
>>>数组参数传递中的一些问题
最常用的方式
1 、 f(int (*p)[4],int n);
int a[3][4];
f(a,n);
2、f(int p[][4],int n)//这里p[]相当于*p
int a[3][4];
f(a,n);
//前两种方式是最为推荐的
3、f(int ...
数组阅读全文
2013-08-29 22:34
⁄ 工业·编程
⁄ 共 631字
先来看一个例子:
文件1:int array_a[3]={1, 2, 3}
文件2:extern int *array_a; printf(“%d”, array_a[2]);
请问输出是多少?
答案是运行时会出错,原因是访问了不可访问的内存。将extern int *array_a改为extern int array_a[]后正常输出。
为什么会出现这样的情况呢?
出现这个问题的原因是编译器对数组和指针的解释是不同的。
使用extern int *array_a; 作声名,编译器会把array_a理解为一个指向int 的指针,对指针...
差别, 指针, 数组, 新手阅读全文
2013-07-26 06:38
⁄ 工业·编程
⁄ 共 2291字
数组降阶是个讨厌的事,这在C语言中是个无法解决的问题,先看一段代码,了解什么是"数组降阶"
#include <IOSTREAM> using namespace std;
void Test( char array[20] ) { cout << sizeof(array) << endl; // 输出 4 }
int main( void ) { char array[20] = { 0 }; cout << sizeof(array) << endl; // 输...
c++, 数组阅读全文
2012-12-25 14:21
⁄ 工业·编程
⁄ 共 127字
因为数组中各元素内存地址与数组的起始地址的间隔是i*sizeof(一个在数组里的对象)。编译器为了建立正确遍历数组的执行代码,它必须能够确定数组中对象的大小。派生类的长度通常都比基类长。
由于数组成员对象到底是基类还是派生类无法确定,故操作易出现错误。
多态, 数组阅读全文
2012-12-04 22:25
⁄ 工业·编程
⁄ 共 10636字
一、数组求和 给定一个含有n个元素的整型数组a,求a中所有元素的和。可能您会觉得很简单,是的,的确简单,但是为什么还要说呢,原因是这道题要求用递归法,只用一行代码。 分析:
1. 如果数组元素个数为0,那么和为0。
2. 如果数组元素个数为n,那么先求出前n - 1个元素之和,再加上a[n - 1]即可
[cpp] view plaincopy
1. // 数组求和
2. int sum(int*a, int n) ...
c++, 数组阅读全文
2012-09-14 22:58
⁄ 工业·编程
⁄ 共 3088字
C++ SDK没有直接提供动态数组功能,虽然可以使用MFC的CArray类,或者用指针+new来实现,但前者需要MFC库,后者使用时不易理解且运行效率低,为此,我把很久前自己写的一个简单的动态数组类贴出来,希望给一些朋友启发。
代码说明:本类在数组成员的赋值和内存分配上作了优化,对大数组的性能有明显提高。
使用方法:将代码复制到头文件CMyArray.h文件中,在项目中引...
sdk, 数组阅读全文