new unsigned char 什么意思

来源:互联网 发布:liquid 知乎 编辑:程序博客网 时间:2024/05/02 23:08

    最近看了一个程序,其中有这一句代码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;}
结果:






0 0
原创粉丝点击