第一个字符出现后的所有字符串

Action()  
{
    char fullpath[] = "c:\\tmp\\logfile.txt";
    char * first_t, * first_g, * first_b;


    first_t = (char *) strchr(fullpath, 't'); 
    lr_output_message ("The first t %s", first_t);


    first_g = (char *) strchr(fullpath, 'g');
    lr_output_message ("The first g %s", first_g);


    first_b = (char *) strchr(fullpath, 'b');
    lr_output_message ("The first b %s", first_b);


    return 0;
}

 strrchr与strchr相反

首先,数组和指针是不同的数据类型,有本质的区别:
char str[] = "hejk"; //sizeof(str) == 5 * sizeof(char)
char * str = "hejk"; //sizeof(str) == 4(x86) or 8(x64)
数组可以自动转型成指针,指针不能转成数组。

然后,字符串等价于字符数组,而不等于字符指针。根据上一条,字符串可以自动转型成字符指针。

再然后,"hejk"叫做“字符串字面量”,任何类型的字面量都是右值(没有名字的临时变量),必须让"hejk"成为左值(有名字的变量),才能够修改"hejk"这个字符串。
char str[] = "hejk";//等号两端是相同的数据类型,右值成为左值
char * str = "hejk";//等号两端是不同的数据类型,右端自动转型成char*,该char*得到了str的名字,而"hejk"这个char数组仍然没有名字

最后,"hejk"是局部字符数组,楼主的两个函数,在返回之后,"hejk"都将不复存在,而返回的值就是不复存在的数组的首地址,所以楼主的两个函数都是错误的,正确的是这样的:
char * str( )
{
static char str[] = "hejk";
return str;
}
静态局部数组被放在“全局变量区”,函数返回后,数组作为全局变量仍然存在。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值