首页 > 试题广场 >

CC++ 语言中,在一个存放字符串的数组 char p_

[不定项选择题]
C/C++ 语言中,在一个存放字符串的数组 char  p_str[],要把字符串中第 4 个字符的值改为 'a',正确的做法是?
  • p_str[3]='a'
  • *(p_str+3)='a'
  • p_str[4]='a'
  • *(p_str+4)='a'
我选AB。
在VS2013上验证过了,选项A、B都可以。
示例代码:
#include <stdio.h>

int _tmain(int argc, _TCHAR* argv[])
{
char str[] = {'a', 'b', '\0'};

str[1] = '1';
printf("%c \n", str[1]);

*(str + 1) = '2';
printf("%c \n", str[1]);

return 0;
}
运行结果:
1
2
(不得不说的是,验证一下就晓得哪个对了)
补充:如果是 char *str = "ab",则不能通过指向字符串常量的指针去修改其指向的对象,即不能通过指向字符串常量的指针 str 去修改字符串常量"ab"的值。
发表于 2016-01-12 16:37:27 回复(3)
假定s是局部变量
char *s="abc" //这里的“abc” 在常量区,但s在栈区
char s[]="abc" //数组,分配到栈区,可以修改。
发表于 2016-01-13 12:24:22 回复(0)
A,B
数组名是指针,p_str[3] == *(p_str+3)。
发表于 2016-10-05 15:33:18 回复(0)
题目是不是有问题,首先char *p_str指向的字符串分配在字符常量区,不能对其修改,其次答案的p_str+3和p_st[3]一样的效果
发表于 2015-07-06 16:20:39 回复(3)
1. 数组下标从0开始
2. *(p+i)=p[i]
发表于 2023-08-03 17:44:17 回复(0)
zz 能多选不说
发表于 2017-03-08 10:16:26 回复(0)
数组名就是指针!!!!p_str[3] == *(p_str+3)。
发表于 2022-05-07 20:59:45 回复(0)
char  p_str[],p_str指向字符常量区,智能通过 *(p_str+3)强制修改,所以A是错误的
发表于 2015-11-22 21:49:35 回复(0)
字符串常量不是存储在静态存储区吗?还能进行修改呀?
发表于 2015-08-22 10:04:36 回复(1)
测试AB正确
#include <bits/stdc++.h>
using namespace std;
int main()
{
    char p_str[]="aaaaa";
    //p_str[3]='b';
    //cout << p_str;
    *(p_str+3)='b';
    cout << p_str;
    return 0;
}

发表于 2023-10-24 09:18:11 回复(0)
AB是一样的
发表于 2016-10-05 18:12:13 回复(0)
A和B不是等价吗
发表于 2015-07-30 09:01:26 回复(0)
答案  B 
A  C 不是数组,不能这样操作
D 偏移多了一个。 
编辑于 2015-07-30 22:58:43 回复(2)