本帖最后由 桃花飞舞 于 2022-6-28 19:05 编辑
- int* sitution(){
- int day[11];
- int r,s=0;
- int t,i;
- for(r = 1;r < 12;r++){
- s = s+r;
- day[r-1] = s;
- }
- return day;
-
- }
复制代码
数组名也是指针,但这里它可是一个很大的指针,针对你的问题
[b]
你的函数是错的,函数的作用是给day[11]赋值并且返回数组的首地址,但是局部变量day[11],调用空间分配,函数结束空间就释放掉了。[/b]
差点被你搞懵
- int* sitution(){
- static int day[11];
- int r,s=0;
- int t,i;
- for(r = 1;r < 12;r++){
- s = s+r;
- day[r-1] = s;
- }
- return day;
-
- }
复制代码
前提:1、
地址和指针是==的关系。2、
数组的数据在内存中的存放空间的地址是连续。3、整型的数据要定义 int *型的指针 int day[11] 是整型的数组,
原因:第一这里是函数所以要加static.,第二int day[11] 的类型是int 型的数组,day这个标识符只是数组的首地址只是一个指针,而且day的地址值是固定的算是常量,也是int型的指针吧,因此int *p ;int *型的变量p,类型是相同的。接受的int指针变量存放的也只是数组的首地址,由于数组的数据在内存中的存放空间的地址是连续,你才能用指针加下标来访问。所以不用把指针定义成int *(p)[11] int *(p)[11]这种一般是二维数组时候才用的。