关于指针和数组的辨析

sam_jiang 2009-08-07 04:52:58
写一个截取字符串的片段
#include "string.h"
#include "stdio.h"

void main()
{
char s[]="d:\\090807\\112405.mpg";// A 如果改成 char *s="d:\\090807\\112405.mpg"
char *p;
char *Name;
Name=strrchr(s,'.');

*Name=0; // B处
p=strrchr(s,'\\');
p=p+1;
printf("%s\n", p);

}
output 112405,这个是正确的,但是如果改成注释的那样,编译没有问题,但单步运行在B处就会出错,这是怎么回事呢,不是说数组名s和指针s是一个意思吗?请辨析一下
...全文
91 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
不动如岳 2009-08-07
  • 打赏
  • 举报
回复
学习了,我以前也不知道,这两个有啥区别。
char a[] = "hello";和char const * const a = "hello";
这两个a一样吗?不一样吧?不太明白啊
gtsfreer 2009-08-07
  • 打赏
  • 举报
回复
其实1楼说的很明白了啊~
char s[]="d:\\090807\\112405.mpg";
这个应该没什么疑问吧?数组的内容是可以随时修改的,
char *s="d:\\090807\\112405.mpg"
这种写法相当于在静态存储区申请了个静态字符串,然后你试图用*Name去改变一个静态的量必然会出问题
而且这个问题编译器发现不了....
healer_kx 2009-08-07
  • 打赏
  • 举报
回复
char a[] = "hello";

基本上相当于

char const * const a = "hello";
当然了,从内存空间上看,也是不一样的。,
但是就两个变量a来看,基本一致了。

sam_jiang 2009-08-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 huziwu 的回复:]
char  s[]="d:\\090807\\112405.mpg";//申请指针,并赋初值为"d:\\090807\\112405.mpg";
char *s="d:\\090807\\112405.mpg";//定义一个常量指针,指向"d:\\090807\\112405.mpg"所在地址,此指针地址不能被改变;
[/Quote]

如果定义成char *s[="d:\\090807\\112405.mpg“
*Name=0 //意思是把0赋给Name所指向的地址地面吧,就是说把指针Name所指的内容更新为0,不是改变指针地址吧,我理解错了吗?
MoXiaoRab 2009-08-07
  • 打赏
  • 举报
回复
用sprintf
dengxuxing 2009-08-07
  • 打赏
  • 举报
回复
Release版本没问题
huziwu 2009-08-07
  • 打赏
  • 举报
回复
char s[]="d:\\090807\\112405.mpg";//申请指针,并赋初值为"d:\\090807\\112405.mpg";
char *s="d:\\090807\\112405.mpg";//定义一个常量指针,指向"d:\\090807\\112405.mpg"所在地址,此指针地址不能被改变;
sam_jiang 2009-08-07
  • 打赏
  • 举报
回复
那用数组s[],s的值不也是字符串的首地址吗?
jingzhongrong 2009-08-07
  • 打赏
  • 举报
回复
char *s="d:\\090807\\112405.mpg", 这个字符串存放在常量数据区,不能修改。s指向字符串的首地址

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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