最近看了一个程序,其中有这一句代码img = new unsigned char[Wid * Hei * 3];上网百度了一下,现将内容总和如下:
1)使用new关键字分配 Wid * Hei * 3 个unsigned char类型的内存。
2)代码1
#include<iostream>
using namespace std;
int main()
{
unsigned char *pa;
pa = new unsigned char[6];//并用unsigned char类型的指针pa 指向这块内存的首地址。
for (int i = 1; i<6; i++)
pa[i] = i;
for (int j = 1; j<6; j++)
printf("%d\n", pa[j]);
return 0;
}
结果:
代码2
#include<iostream>
using namespace std;
int main()
{
unsigned char *pa;
pa = new unsigned char[6];
for (int i = 1; i<7; i++)//输入数组
pa[i] = i;
for (int j = 1; j <7; j++)//输出数组
/*cout << " pa[" << j << "]=" << pa[j] << endl;*/
cout << pa[j] << endl;
return 0;
}
结果:
为什么两个结果不一样呢?pa被你定义为一个字符变量,变量pa在用cout输出时就会输出v的字符形式;不同的值对应不同的字符,1这个值对应的字符就是笑脸了。把pa定义为int型,或者unsigned int型,cout会自动将整形变量v的值1输出为“1”.
#include<iostream>
using namespace std;
int main()
{
unsigned int *pa;
pa = new unsigned int[6];
for (int i = 1; i<7; i++)//输入数组
pa[i] = i;
for (int j = 1; j <7; j++)//输出数组
cout << " pa[" << j << "]=" << pa[j] << endl;
/*cout << pa[j] << endl;*/
return 0;
}
结果: