c语言字串指针 char*

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:_

猜你喜欢

转载自www.cnblogs.com/nanfei/p/11923523.html
今日推荐