C++/C--在堆栈中使用数组的区别

int* xbut;
xbut=(int*)calloc(40,sizeof(int));
xbut[29]++;

输出结果为1;
此用法相当于在堆内存中,使用数组,需要手动释放内存。

int xbut[40]={0};
xbut[29]++;
输出结果为1;
此用法相当于在栈内存中,使用数组,内存会自动释放。


存在疑问:
xbut是地址,xbut[29]还是地址,xbut[29]++应该是地址类型操作,其结果应该是&xbut[20],为什么这里是对xbut[29]中的值自加1呢,请大神指导,是我的理解有问题吗。
xbut[29]怎么就变成常规的变量了,是因为我是在int*型地址值中分配40个int型,并将它赋初值为0,结果xbut[29]就应该是int型吗。。。

你可能感兴趣的:(C/C++)