标题:这是一个指向常量的指针还是指向非常量的指针?
只看楼主
b1592187525
Rank: 1
等 级:新手上路
帖 子:86
专家分:4
注 册:2017-2-15
结帖率:90.32%
已结贴  问题点数:20 回复次数:3 
这是一个指向常量的指针还是指向非常量的指针?
第一种这样是指向一个非常量的指针吗:
char *p="abcd";


第二种这样是指向一个常量的指针吗:
const char *q="abcd";


以下代码中指针p所指向的值无法被修改,说明指针p指向的值是一个常量。既然这行语句char *p="xzcvbnm";表明指针p指向的值为常量,那要定义一个指向非常量的指针该如何定义呢?
程序代码:
#include"stdio.h"
int main(void){
    char *p="xzcvbnm";
    char *a="jfknejfk";
    for(;*a;p++,a++){
        *p=*a;
        printf("%c",*p);
    }
    *p='\0';
    printf("\n%s",p);
    return 0;
}


[此贴子已经被作者于2020-3-9 22:07编辑过]

搜索更多相关主题的帖子: 指针 指向 char printf 常量 
2020-03-09 21:02
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:20 

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-03-09 21:17
b1592187525
Rank: 1
等 级:新手上路
帖 子:86
专家分:4
注 册:2017-2-15
得分:0 
以下是引用叶纤在2020-3-9 21:17:37的发言:

这个贴已经讲的很清楚了https://bbs.bccn.net/redirect.php?goto=findpost&pid=2719244&ptid=499301

如果要修改指针p所指向的值,只能将p定义成数组的形式了,这样数组的值才是一个非常量的值。
程序代码:
#include"stdio.h"
int main(void){
    int i;
    char p[]="xzcvbnm";
    char *a="jfknejfk";
    for(i=0;*a;i++,a++){
        p[i]=*a;
        printf("%c",p[i]);
    }
    p[i]='\0';
    printf("\n%s",p);
    return 0;
}
2020-03-09 22:17
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:0 
你最终想得到什么结果,字符串字面量本身就是一个常量,是一个文本,所以conste char*永远指的是一个常量,不可能指向一个变量,
字符串字面量“”也就是双引号里的内容只能够读取,不可以改变,也就是说你想要改变ch[0]或者ch[1]....是非法的,如果想改变,可以使用字符串而非字符串字面量。我曾经也是把字符串字面量当成字符串来使用,最终被版主们大佬们指正,所以,也不希望你发生类似的错误。

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-03-09 22:30



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-499665-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.778566 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved