首页 > 试题广场 >

哪一句会出错?

[单选题]
char* s="AAA"; //1
printf("%s",s); //2
s[0]='B'; //3
printf("%s",s); //4
哪一句会出错?
  • 第1句
  • 第2句
  • 第3句
  • 第4句
第3句错误,可以参考C专家编程p87,讲的很清楚,初始化指针时所创建的字符串常量被定义为只读。如果试图通过指针修改这个字符串的值,程序就会出现未定义的行为。S[0]只可读,不可写
发表于 2015-04-28 16:39:38 回复(2)
在定义char* s="AAA";时,表示定义了一个指针s,其指向的地址是常量区"AAA"的地址,此时如果想修改*s就是在试图修改常量"AAA",显然这是违法的;如果定义成char s[]="AAA";此时相当于创建了一个副本,其值为"AAA",不再是常量,可以通过s[i] = ***;修改"AAA"的值。
编辑于 2018-07-27 20:04:46 回复(1)
"AAA"是字符串常量。s是指针,指向这个字符串常量,所以声明s的时候最好将其声明为const,对是s[0]的赋值操作是不合法的
发表于 2016-10-18 08:27:42 回复(2)
注意char* s和char s[]的区别,前者是不能改的
发表于 2021-02-21 12:15:18 回复(0)
指针只具有指向/寻址 权限,没有修改数值权限

发表于 2021-10-15 14:07:46 回复(0)
<p>如果是C语言A正确,如果是C++语法检测严格A需加上const才正确</p>
发表于 2020-08-05 15:22:38 回复(0)

字符串常量不能被修改

发表于 2020-02-27 11:24:49 回复(1)
C风格字符串是常量,C++风格(即string模板)字符串可以修改
发表于 2018-07-25 21:06:38 回复(0)
第3句错误,初始化 指针 时所创建的 字符串常量 被定义为只读。如果试图通过指针修改这个字符串的值,程序就会出现未定义的行为。S[0]只可读,不可写 …………………… 在定义char* s=“AAA”;时,表示定义了一个指针s,其指向的地址是常量区"AAA"的地址,此时如果想修改*s就是在试图修改常量“AAA”,显然这是违法的;如果定义成char s[]=“AAA”;此时相当于创建了一个副本,其值为“AAA”,不再是常量,可以通过s[i] = ***;修改“AAA”的值。
编辑于 2020-02-26 12:51:19 回复(0)
"AAA"是字符串常量。s是指针,指向这个字符串常量,所以声明s的时候就有问题。 cosnt char* s="AAA"; 然后又因为是常量,所以对是s[0]的赋值操作是不合法的。
发表于 2014-11-14 23:38:27 回复(1)

第一句错了
发表于 2022-04-23 20:30:24 回复(0)
"AAA"为const char *,s只是指向它的指针,不能修改常量的值;
调试当场崩溃;
发表于 2021-12-14 12:29:12 回复(0)
这是一个字符串常量,不可以修改
发表于 2017-05-10 08:33:25 回复(0)
第一句不也有错吗?
发表于 2016-07-04 12:02:13 回复(3)

指针常量(pointer to constant)是指指针本身是常量,即指针的值不能被修改,但是可以通过指针访问和修改所指向的数据。常量指针(constant pointer)是指指针所指向的数据是常量,即所指向的数据不能被修改,但是指针本身的值可以修改。

具体来说,指针常量的声明方式是在指针类型前加上const关键字,例如:int *const p; 表示p是一个常量指针,即p的值不能被修改,但是可以通过p来访问和修改所指向的数据。

常量指针的声明方式是在指针变量名前加上const关键字,例如:const int *p; 表示p是一个指向常量int的指针,即p的值可以被修改,但是不能通过p来修改所指向的int类型的数据。

需要注意的是,指针常量和常量指针的区别在于指针常量的值不能被修改,而常量指针的值可以被修改。同时,通过常量指针可以实现只读保护,而通过指针常量可以实现常量传递。
发表于 2023-09-16 17:59:11 回复(0)
常量不能给常量赋值,例如:10=2
发表于 2022-03-03 09:44:54 回复(0)
<p>基础知识不牢固,char *定义初始化的字符串,指针指向的字符串为字符串常量,该字符串常量不能对其修改</p>
发表于 2020-10-15 07:34:46 回复(0)

发表于 2024-08-19 20:24:53 回复(1)
编译器里面第一句就直接报错为const char* 不能用于初始化 char*
发表于 2024-07-29 17:02:49 回复(0)
666
发表于 2023-08-25 16:39:59 回复(0)