有关sizeof的问题

sunzhikai1978 2003-10-06 12:49:29
#include "stdafx.h"
#include <stdio.h>
#include <string.h>

#define MAX 15

int main()
{
char *p = "myOnly!";
char q[MAX];
int i = 0;
strcpy(q,p);
for(i=0; i<sizeof(p); i++){
printf("%c\n",q[i]);
}
printf("\n");
return 0;
}
为什么这个程序只输出了“myOn”而其他的字符没输出来呢??
...全文
19 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangfengsdu 2003-10-06
  • 打赏
  • 举报
回复
p是一个指针,代表内存的地址,
32位机器应该是4个字节。
sizeof(p)应该是等于4,所以输出的结果就是 myOn,
要想让上面的程序打印出预料中的结果,
可以用strlen()函数。
  • 打赏
  • 举报
回复
指针长度4字节
  • 打赏
  • 举报
回复
呵呵,这里sizeof(p)出来的是p的长度,也就是说是4字节。
xjl999 2003-10-06
  • 打赏
  • 举报
回复
sizeof的大小不是你p指针所指向的字符串的大小,而是p指针所占的内存的大小
p指针的大小是4字节!,字符串的大小是用strlen();
ahuu 2003-10-06
  • 打赏
  • 举报
回复
sizeof()返回某个数据类型的大小,如:整形为2,指针为4。。。
strlen()返回字符窜的长度,如:strlen("dfdf"),返回字符串的长度为5,包括"\0"
wizlian 2003-10-06
  • 打赏
  • 举报
回复
指针的大小是4个字节!!

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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