文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>C语言 字符数组与字符指针差别!!

C语言 字符数组与字符指针差别!!

时间:2010-08-19  来源:fishmwei

看下这程序就懂了!呵呵
#include <stdio.h>
#include <string.h>

int main(void)
{
    char *p1[] = {"abc", "de"};
    char p2[][8] = {"2abc", "2de"};
    char *p3 = "3abc";
    char p4[] = "4abc";
    int i;

    p1[1] = "aaa";
//错误    p1[1][1] = 'b';
//错误    strcpy(p1[1], "p1");
    printf("p1:\n");
    for (i = 0; i < 2; i++) {
        printf("%s\n", p1[i]);
    }

//错误    p2[1] = "bbb";
    strcpy(p2[1], "p2");    //可以了
    p2[1][1] = '9';         //这样可以了
    printf("\np2:\n");
    for (i = 0; i < 2; i++) {
        printf("%s\n", p2[i]);
    }

    p3 = "3def";
//错误    p3[2] = '0';
//错误    strcpy(p3, "p3");
    printf("\np3 is %s\n", p3);

//错误    p4 = "4def";
    strcpy(p4, "p4");       //可以了
    p4[0] = 'f';            //这样可以了
    printf("p4 is %s\n", p4);
   

    return 0;
}

总结就是指针和数组的差别。指针指向的是一个内存区域,属于间接访问。数组是直接访问。
对于p3指向字符串常量"3abc",常量的位置内容不可以更改,但是指针所指的内存可以更改。
对于p4数组,就是一个内存区域,是程序运行后分配的,内容可以改,所以就可以按位赋值,也可以使用strcpy操作。p4也是指针,指向数组首地址。但是,p4不可变,相当于p4是常量指针,指向的位置只能是p4数组所分配的空间。p4 = "4def"使p4指向字符串常量"4def"所在的内存就错了。

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载