从redis源码深入理解char [] 和char *

#include <stddef.h>

//#include "1.h"
#include <stdlib.h>
#include <stdio.h>
#include <stdio.h>
#include <pthread.h>
#include <string.h>
#define PREFIX_SIZE 1 //dsfaasdfaswhat
#include <string.h>
int main(){
char * s="aaa111111111423423434324232424111";   // char * 本质是一个常量, 他记录的是一个指针,这个指针指向的是内存中专门记录常量的一块地址. debug时候s 的内容是0x400700.非常短.
int aaa=33333333;

char * p="afdsf dsafdsf 111dsaf"; // 现在p的值是0x400722. 看的出来就是上面那个加一段.
char buff[]="afdsf dsafdsf 111dsaf";  // 17,18行同时注释掉.程序报错.
p=buff;  //这样p=buff就对了..........p地址:0x7fffffffe020这个地址怎么这么长了???????? 看看buff地址也是这个0x7fffffffe020.这行代码其实是用p指向了buff.等价于p指向了buff的第一个地址了. 注意p本身就是一个地址. 所以p指向了一个可以修改的地址. char []是可以修改的.所以下面p里面再截字符串之后就等价于修改的是buff里面的数据了!!!!!!!!!!!!!!!整个代码就是从redis上看到的.是非常实用的c语言处理字符串的技巧.
p=strchr(p,' ');
p++;
 printf("%s\n",p);
char *x = strchr(p,' ');
*x = '\0';
printf("%s",p);


}
View Code
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

15122306087

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值