字符串指针修改问题

字符串的定义方式有两种,直接先上代码:

第一种:

char num[20] = "hello";
	*num = '0';     //可行
	num[1] = '0';   //可行
	cout<<num<<endl;</span>

第二种:

char* num = "hello";
	*num = '0';     //错误
	num[1] = '0';   //错误
	cout<<num<<endl;</span>

对于第一种方式:

char w[] = "hello";

"hello"保存在栈空间数组里. 数组名为w, 函数名为数组的首地址.
可以通过w[i]='a', 或*(w+i)='a'的形式来修改数组内容.

对于第二种方式:

char *m = "hello";

"hello"保存在文字常量区,该数据不能修改,默认有只读属性.
由指针m指向. 不能通过指针m来修改此值.

时间: 2024-09-13 06:16:36

字符串指针修改问题的相关文章

C语言字符串指针的一个小问题

问题描述 C语言字符串指针的一个小问题 题目如图,答案是又定义了一个指针变量做的.而我的答案编译出来结果也对,就是会运行结束之后出现一个警告对话框.不明白怎么回事,第三幅我的答案有什么问题吗?请问如果不用答案的那种编译方法,我的这种方法可不可行?能改进不报错吗? 解决方案 你的程序没有发现问题 #include <stdio.h> void fun(char * a) { int i = 0, j = 0; while (a[i] == '*') i++; for (; a[i] != '';

c语言-pszBuf为字符串指针,用C语言实现将该字符串中的所有小写字符&amp;amp;#39;a&amp;amp;#39;-&amp;amp;#39;z&amp;amp;#39;转换为大写字符。

问题描述 pszBuf为字符串指针,用C语言实现将该字符串中的所有小写字符'a'-'z'转换为大写字符. 代码中不得调用任何C标准库函数 C语言小白 求解答............................................................................ 解决方案 #include <string.h> void foo(char *pszBuf) { int n = strlen(pszBuf); for (int i = 0; i &l

C语言OJ项目参考(2290)字符串的修改

2290: 字符串的修改 Description 一个字符串s.一个字符串t,判断t是否是s的子串,若是则将s中所有出现了t串的地方换成指定的字符或字符串p,若不是,则输出NO Input 一个字符串s.一个字符串t,要换的字符或字符串 Output 输出修改后的s串 Sample Input** asdfasdf 132 saf Sample Output NO 参考解答: #include<stdio.h> #include<string.h> char str[1002];

C语言 字符串指针详解及示例代码_C 语言

C语言中没有特定的字符串类型,我们通常是将字符串放在一个字符数组中,这在<C语言字符数组和字符串>中已经进行了详细讲解,这里不妨再来演示一下: #include <stdio.h> int main(){ char str[] = "http://c.biancheng.net"; int len = strlen(str), i; //直接输出字符串 printf("%s\n", str); //每次输出一个字符 for(i=0; i<

c++-C++ 字符串指针输出的为什么是完整字符串,而不是地址

问题描述 C++ 字符串指针输出的为什么是完整字符串,而不是地址 char str[3] = {'a','b',''}; cout<<str<<endl; //1 char *pChar = str; cout<<pChar<<endl; //2 int in[3] = {1,2,3}; cout<<in<<endl; //3 以上代码,1和2处的str.pChar不是指针么?为什么输出的是"ab",而不是一个地址

c语言-C语言中二级指针修改数组问题。

问题描述 C语言中二级指针修改数组问题. 数组相当于一级指针,我写了一个二级指针被调用.结果它总是宕机,求指导,谢谢. 解决方案 这段程序编译会报错吧:cannot convert parameter 1 from 'char (*)[100]' to 'char **' 可以这样 试试看#include #include #include int getMemBuf(char*& p2){ char* tmp = NULL; tmp = (char*)malloc(100); strcpy(t

如果C函数传递,或者返回字符串指针,C#如何调用?

问题描述 如果C函数传递,或者返回字符串指针,C#如何调用?假设C函数:extern"C"DLL_EXTERNCHAR*__stdcallget_str(void);extern"C"DLL_EXTERNvoid__stdcallset_str(CHAR*);extern"C"DLL_EXTERNCHAR*__stdcallget_set_str(CHAR*);C#如何调用? 解决方案 解决方案二:char*一般用string类型代替,参数的话,

c 字符串指针内存问题-C 字符串指针内存问题

问题描述 C 字符串指针内存问题 char * str="new"; str 的值是否是"new"字符串在常量存储区的地址? 用cout<<str ;直接输出结果为什么是new ? 解决方案 嗨, str确实是指向new字符串的指针,而且cout<<str输出new没有任何问题的. 猜测的你的疑惑:为什么不输出new字符串地址值? cout使用<<对待输出的不同数据类型对象操作进行了重载,用cout<<输出str时,c

数据库-vs2010连接字符串,字符串如何修改?

问题描述 vs2010连接字符串,字符串如何修改? 现在数据库端口号都设置对了,但是问题还是在连接字符串上,显示的异常信息是"无法打开登录所请求的数据库 "familywealth".登录失败.用户 'xh-PCxh' 登录失败."请教各位连接字符串怎么该?谢谢! 解决方案 估计还是你用户名密码的问题,另外你用的是集成认证,最好改成混合认证,用sa和密码. 解决方案二: 链接字符串参考别人的,一般就是i几个参数修改修改. 解决方案三: 你起码把你的链接字符串贴出来