c语言中 char* 不仅能存字符串,还能存二进制数据,所以它的用途因使用者而定。
之前一直对这个数据类型不清楚,专门写了一个示例程序,以备忘。
代码如下:
char* p = (char*)malloc(8); int i = 0; for (i = 0; i < 8; i++) if (i == 5) p[i] = 0; else p[i] = 'a' + i; cout << "strlen(p):" << strlen(p) << endl; cout << "sizeof(p):" << sizeof(p) << endl; cout << "p:" << p << endl; for (i = 0; i < 8; i++) printf("%d:%c\t", i, (p[i] == 0 ? '_' : p[i])); cout << "\nbefore free:" << endl; for (i = 0; i < 8; i++) cout << i << ":" << (p[i] == 0 ? '_' : p[i]) << endl; free(p); cout << "after free:" << endl; for (i = 0; i < 8; i++) cout << i << ":" << (p[i] == 0 ? '_' : p[i]) << endl;
程序输出如下:
strlen(p):5 sizeof(p):8 p:abcde 0:a 1:b 2:c 3:d 4:e 5:_ 6:g 7:h before free: 0:a 1:b 2:c 3:d 4:e 5:_ 6:g 7:h after free: 0:_ 1:_ 2:_ 3:_ 4:_ 5:_ 6:_ 7:_