c++ notes

数组指针

int *a[2]包含指向int指针的数组,大小为2


数组

考虑a[3][2]={{1,2},{3,4},{5,6}}a, a[0], &a[0][0], *a值(假设为0)是一样的。
a+1*(a+1)的值都为8,不过涵义不一样,a+1是行指针,间隔为8 a+1 - a = 8*(a+1)是列指针,每次偏移增加4 *(a+1)+1-*(a+1)=4
可以认为a[1]*(a+1)等同,那么就有a[1]+1*(a+1)+1一样指向第二行第二列。*(a[1]+1)=4。另外,a行指针,*a, a[0]列指针。

&a[1], &*(a+1)a+1等同,可看做行指针。

可否令int **p = a?


如何向函数传递数组?


MinGW数组大小问题

int data[10000000]出错。估计是stack over flow, 1Mb可包含262144个int,测试结果是最多可以分配521143个int,其大小为1.988Mb。网上说windows下gcc默认stack size为2Mb,但可以声明多个数组,每个大小都达到最大,结果不报错,那么这个stack size指的是某个函数的还是某个程序的还是某个变量的?
另外,更改stack size大小:gcc -Wl,--stack,212097152 -g main.c
有三种解决办法:
1,声明一个指针int *p;,然后动态分配空间p=new int[10000000];
2,static int data[10000000];
3,将数组声明为全局变量


static

全局变量定义在函数外,作用域从定义处开始到程序结束。如何函数在定义之前要调用全局变量,需要在变量前面加上external,如何其他文件要使用则需要在函数外用external声明这个变量。
静态全局变量作用域在本文件内。
静态局部变量作用域在函数内,一旦分配后就不再改变。
如果用一个指针指向静态全局变量或者静态局部变量,然后在作用域外操作这个指针,会不会改变静态变量呢?


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目类型 a.C++与C差异(1-18) 1.C和C++中struct有什么区别? C没有Protection行为...
    阿面a阅读 12,283评论 0 10
  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 8,808评论 3 44
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,906评论 18 399
  • 上次饭聊邀约发出后,收到了各种问询、各种邀请,或犹豫、或好奇。有人各种猜测我邀请饭聊的原因,有人让我提供理由去说服...
    一粒番豆阅读 3,073评论 0 0
  • 2016年11月10日下午学校社政组及体育组、区历社、思品和体育教研员一行来到爱德外国语学校参观学习。 下午第三节...
    鸟语虫声阅读 4,012评论 0 0