C语言中:
申请内存空间的头文件是#include <malloc.h>,最重要的是不要忘记释放申请的内存空间,防止内存泄漏
申请一个结点的内存空间
#include <stdio.h>
#include <malloc.h>
#include <assert.h>
int main()
{
int *p = (int *)malloc(sizeof(int) * 1);
assert(p != NULL);
free(p);
return 0;
}
申请一维数组的内存空间
#include <stdio.h>
#include <malloc.h>
#include <assert.h>
#define SIZE 10
int main()
{
int *arr = (int *)malloc(sizeof(int) * SIZE);
for(int i = 0;i < SIZE;i++) //给一维数组赋值
{
arr[i] = i;
}
for(int i = 0;i < SIZE;i++) //打印一维数组
{
printf("%3d",arr[i]);
}
printf("\n");
free(arr); //释放空间
return 0;
}
申请二维数组的内存空间,示例为5 * 5的二维数组:
#include <stdio.h>
#include <malloc.h>
#include <assert.h>
int main()
{
int **arr = (int **)malloc(sizeof(int) * 5);
assert(*arr != NULL);
for(int i = 0;i < 5;i++)
{
arr[i] = (int *)malloc(sizeof(int) * 5);
assert(arr[i] != NULL);
}
for(int i = 0;i < 5;i++) //给二维数组赋值
{
for(int j = 0;j < 5;j++)
{
arr[i][j] = i + j;
}
}
for(int i = 0;i < 5;i++) //打印二维数组
{
for(int j = 0;j < 5;j++)
{
printf("%3d",arr[i][j]);
}
printf("\n");
}
for(int i = 0;i < 5;i++) //释放内存
{
free(arr[i]);
}
free(arr);
return 0;
}
C++中:
在C++中,用new来申请内存空间,delete来释放申请的内存空间
申请一个结点的内存空间
#include <iostream>
#include <assert.h>
using namespace std;
int main()
{
int *p = new int(int()); //申请内存空间
*p = 10; //赋值
cout << *p << endl; //打印的值是10
delete(p); //释放内存空间
return 0;
}
申请一维数组的内存空间
#include <iostream>
#include <assert.h>
using namespace std;
int main()
{
int *arr = new int[10]; //申请内存空间
for(int i = 0;i < 10;i++) //赋值
{
arr[i] = i * 2;
}
for(int i = 0;i < 10;i++) //打印
{
cout << arr[i] << " ";
}
cout << endl;
delete []arr; //释放申请的内存空间
return 0;
}
申请二维数组的内存空间,示例是5*5的二维数组:
#include <iostream>
#include <assert.h>
using namespace std;
int main()
{
int **arr = new int*[5]; //申请内存空间
for(int i = 0;i < 5;i++)
{
arr[i] = new int[5];
}
for(int i = 0;i < 5;i++) //赋值
{
for(int j = 0;j < 5;j++)
{
arr[i][j] = i + j;
}
}
for(int i = 0;i < 5;i++) //打印二维数组
{
for(int j = 0;j < 5;j++)
{
cout << arr[i][j] << " ";
}
cout << endl;
}
for(int i = 0;i < 5;i++) //释放申请的内存空间
{
delete []arr[i];
}
delete []arr;
return 0;
}
C++和C语言自定义类型的区别:
C语言的自定义类型只允许存放成员变量
C++的自定义类型不仅存在成员变量,还可以存在成员方法,当然,成员变量占内存,成员方法不占内存
struct stack
{
int *_arr;
int _top;
int _len;
void init()
{
_top = 0;
_len = 10;
_arr = new int[10];
}
void push( int val);
void pop();
int top();
void destroy();
bool isEmpty();
void resize();
};
最后呢,在提醒一点,若是自定义类型为空,struct A{ };C语言中为0个字节,而在C++中占1个字节……