请问如何修改b为f?

greex 2010-09-21 04:26:25
char *pTest=" abcd ";

期望:
char *pTest=" afcd ";
...全文
151 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
greex 2010-11-22
  • 打赏
  • 举报
回复

//分解: BYTE *pData, int nLen;

int nPrevCode = 0;
int nFrames = 0;

BYTE *pFrameData = pData;
int nFrameLen = nLen;

BYTE *pH264Data = pData;
int nH264Len = nLen;
while(nH264Len >= 4)
{
if(pH264Data[0] == 0x00 && pH264Data[1] == 0x00 && pH264Data[2] == 0x01)
{
int code = pH264Data[3] & 0x1f;
if(code == 0x01 || (code >= 0x05 && code <= 0x09))
{
if(nPrevCode == 0x01 || nPrevCode == 0x05)
{
if(nFrames > 0)
{
if(pH264Data[-1] == 0x00) pH264Data--;
nFrameLen = pH264Data - pFrameData;
// push_frame(pFrameData, nFrameLen)
pFrameData = pH264Data;
}
}

nPrevCode = code;
}
if(code == 0x01 || code == 0x05)
{
nFrames++;
}

pH264Data += 4;
nH264Len -= 4;
}
else
{
pH264Data++;
nH264Len--;
}
}

nFrameLen = nLen - (pFrameData - pData);
// push_frame(pFrameData, nFrameLen)

greex 2010-09-21
  • 打赏
  • 举报
回复
NULL 在有此环境下没有定义,移植性差,我不建议用它.


to luciferisnotsatan:在windows下大多语言都是这样定义的,这个是VS中的定义.
#define NULL 0
GARY 2010-09-21
  • 打赏
  • 举报
回复
不过这个NULL,确实都是定义为0的。
在很多头文件中都有其定义。
看下msdn的解释:

NULL is the null-pointer value used with many pointer operations and functions. It is equivalent to 0. NULL is defined in the following header files: CRTDBG.H, LOCALE.H, STDDEF.H, STDIO.H, STDLIB.H, STRING.H, TCHAR.H, TIME.H and WCHAR.H.

所以使用NULL来表示空指针值比0要好。
程序员应该养成良好的编码风格。
(嘿嘿,我是菜鸟)
GARY 2010-09-21
  • 打赏
  • 举报
回复

if(0 == pStr)
{
return -1;
}


我觉得不管NULL是不是就是0,
这里还是写为NULL跟好。

if(NULL == pStr)
{
return -1;
}

这样的编码风格,看起来一目了然。


GARY 2010-09-21
  • 打赏
  • 举报
回复
想问一下,楼主用的什么编译工具?

char *pTest=new char[255];
memset(pTest,0,255);
memcpy(pTest,"fldjfk",6);

不会编译出错吗?
“memset”: 不能将参数 2 从“const char [7]”转换为“int”

确实如楼主所说:
char *pTest=" abcd ";
这个字符串是不能够修改的。
下面这个可以。

char *pTest = new char[10];
strcpy(pTest, " abcd ");
pTest[2] = 'f';

luciferisnotsatan 2010-09-21
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 greex 的回复:]

"还有 NULL 是宏定义的符号常量 不只一个库有定义 但一般是定义成0的"

请问什么环境下NULL定义不是0?学习一下,谢谢;
[/Quote]
如果你发现哪个库的NULL没被定义为0,你可以发邮件给该库作者,大骂一顿。
luciferisnotsatan 2010-09-21
  • 打赏
  • 举报
回复
改不了。
char *pTest=" abcd ";这里的" abcd "编译时会放在常量区域里的,pTest指向的是常量,无法改。

你可以写成
char test[] = " abcd ";
char *pTest = test;
greex 2010-09-21
  • 打赏
  • 举报
回复
"还有 NULL 是宏定义的符号常量 不只一个库有定义 但一般是定义成0的"

请问什么环境下NULL定义不是0?学习一下,谢谢;
justkk 2010-09-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 greex 的回复:]
调用见下:
char *pTest=" abcd ";
testFun_test_1(pTest);
[/Quote]
这样的话,pTest指向只读内存区域,不能修改的
可以这样:
char pTest[]=" abcd ";
testFun_test_1(pTest);
greex 2010-09-21
  • 打赏
  • 举报
回复
你用什么语言?如果是C++你看一下NULL的原始定义,应是用0表示空的.
operatingtuzi 2010-09-21
  • 打赏
  • 举报
回复
为什么非要改常量区的东西呢

自己在栈里分配段内存用 在修改不好吗

还有 NULL 是宏定义的符号常量 不只一个库有定义 但一般是定义成0的
shenchenman 2010-09-21
  • 打赏
  • 举报
回复
NULL和0怎么会一样呢,NULL指的是空指针,哪里也不指,0是说指针地址是0
greex 2010-09-21
  • 打赏
  • 举报
回复
我明白了:
这种写法相当于const
char *pAAA ="fldjfk";
要这样写:
char *pTest=new char[255];
memset(pTest,0,255);
memcpy(pTest,"fldjfk",6);
qf17331733 2010-09-21
  • 打赏
  • 举报
回复
汗~什么时候NULL为0了~NULL表示空,不等于0
greex 2010-09-21
  • 打赏
  • 举报
回复
NULL 不就是用0定义的吗?这个有什么区别吗?
greex 2010-09-21
  • 打赏
  • 举报
回复
调用见下:
char *pTest=" abcd ";
testFun_test_1(pTest);
qf17331733 2010-09-21
  • 打赏
  • 举报
回复
if(NULL == pStr)
{
return -1;
}
greex 2010-09-21
  • 打赏
  • 举报
回复
int testFun_test_1(char *pStr)
{
if(0 == pStr)
{
return -1;
}
pStr[0]='3';
}

这样运行时出错的
qf17331733 2010-09-21
  • 打赏
  • 举报
回复
char *pTest=" abcd ";
char pTest[1]= "f";

65,189

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧