社区
C++ 语言
帖子详情
在C中如何初始化char*类型?
vmape
2003-11-14 11:37:04
如题,要求是在C中,在C++中我也知道应该用char* str=new char之类,但我们练习要求用C,所以麻烦大家啦!
另外,用char[]是自动就初始化了吧?我练习的时候发现,用char*必然出错,用char[]就可以得到正确的结果。
多谢!
...全文
10893
19
打赏
收藏
在C中如何初始化char*类型?
如题,要求是在C中,在C++中我也知道应该用char* str=new char之类,但我们练习要求用C,所以麻烦大家啦! 另外,用char[]是自动就初始化了吧?我练习的时候发现,用char*必然出错,用char[]就可以得到正确的结果。 多谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hamsky
2003-11-19
打赏
举报
回复
to arfi
main()
{
char *str="abcde";
strcpy(str,"hello");
printf("%s",str);
}
我在TC2.0编译通过!
kuangjingbo
2003-11-14
打赏
举报
回复
char *str="asdfasdf"
char *str;
str="asd"
arfi
2003-11-14
打赏
举报
回复
To hamsky(秋思原):
如果初始化时
char *str = "abcde";
再用strcpy(str, "hello");这样的函数来改写str指向的内容是非法的。
ionlic
2003-11-14
打赏
举报
回复
char *str = "hello";
hamsky
2003-11-14
打赏
举报
回复
char *str 是定义一个指针变量,没有开设内存空间来存放;如果要写入内容必须使用malloc(sizeof(char)*N)来分配一定的内存空间。
char str[]定义的是一个字符串变量,有一定长度的内存空间,str是字符串的地址,但写入内容时要考虑空间的大小
回:arfi()
如果你使用char *str;
可以 char *str = "abcde";
或者
char *str;
str = "abcde";
这种情况下的字符串只能读,不能改写。
**********************************
str的内容是可以通过strcpy()函数改写的,但不能超过长度,否则溢出。
wywggggaaaa2000
2003-11-14
打赏
举报
回复
char *str;
*str=null;
muyangzuo
2003-11-14
打赏
举报
回复
单个字符指针:char *str = (char *)malloc(sizeof(char));
字符串指针: char *str = (char *)malloc(length*sizeof(char));
KeepCoding
2003-11-14
打赏
举报
回复
char *str = NULL;
zhusunme
2003-11-14
打赏
举报
回复
这样可以的: char *str="dsadff";
arfi
2003-11-14
打赏
举报
回复
如果你使用char *str;
可以 char *str = "abcde";
或者
char *str;
str = "abcde";
这种情况下的字符串只能读,不能改写。
如果要改写的话,动态分配内存使用malloc
str = (char *)malloc(size);
释放的时候free(str);
sakura169
2003-11-14
打赏
举报
回复
char *str = (char*)malloc(sizeof(char));
strcpy(str,"asdf");
geeksky
2003-11-14
打赏
举报
回复
栈中数组是不能赋值的(char *也算数组吧。。。),只能给堆中的赋值,哎,表达能力不好,大概是这样了,说得不对请改正
zhouqingyuan
2003-11-14
打赏
举报
回复
估计楼主的意思是char*动态分配,那就用(char*)malloc(sizeof(char)*n)好了,对应new char(n);
michaelli
2003-11-14
打赏
举报
回复
#include<stdio.h>
#include<stdlib.h>
main()
{
char *str=NULL; //初始化
return 0;
}
chatairy
2003-11-14
打赏
举报
回复
一点拙见:
如果初始化成数组时,编译器自动分配内存,同用malloc分配内存是一样的。
不提倡在用指针初始化字符数组后再改写此数组,因为结果未定义,可能得出正确的结果,也可能结果不正确。为了省一点事而丧失了C的可移植性,不值得
happystudy
2003-11-14
打赏
举报
回复
如果仅是turboc 2.0 的话也可以不给出空间的,直接定义就可以了.
比如:
char *str;
.
.
str = "hello!';
或
char *str = "hello!";
不过一般情况下提倡用iceandifire的用法,
补充,如果你事先不知道字符串的长度(即不知道n的时候)你可以把n取的适当大些,或着用已有的字符串来给出大小空间,
比如:
char * str1 = "I"m a boy!";
char *str2 = (char *)malloc(sizeof(str1));
strcopy(str2,str1);
iceandfire
2003-11-14
打赏
举报
回复
上面写错了一点,是malloc的时候sizeof(char) * N
N是一定的大小
不好意思
iceandfire
2003-11-14
打赏
举报
回复
一般来说先给指针分配空间
char *str = (char *)malloc(sizeof(char));
然后将响应字符串copy到该空间去
strcpy(str, "hello");
用完后释放
free(str);
在将指针置为空,这样做的目的是防止出现野指针
str = NULL;
ilovedonny
2003-11-14
打赏
举报
回复
同意arfi()的观点,用char *str = "abcde";初始化的话,字符串只能读不能写~!
C语言
中
字符串的存储方法
众所周知,C语言
中
没有数据
类型
能够存储字符串,
char
数据
类型
仅仅能够存储一个字符的数据,那么在C语言
中
关于存储字符串这一难题我们改何去何从呢? 下面将详述相关的字符串存储方法; 1、使用字符数组存; [root@Qrui...
const
char
*
类型
的值不能用于
初始化
char
*
类型
的实体
VS2019项目出现"const
char
*"
类型
的实参与 “
char
*”
类型
的形参不兼容错误的解决方法 ...原文链接:const
char
*
类型
的值不能用于
初始化
char
*
类型
的实体_触动人生的博客-CSDN博客_不能用于
初始化
char
类型
的实体 ...
const
char
*
类型
不能用于
初始化
char
*
类型
实体
const
char
*
类型
不能用于
初始化
char
*
类型
实体 在学习C++ Primer PLus代码重用章节部分代码是出现以下错误
char
* Singer::pv[] = { "other","alto","contralto","soprano","brass","baritone","tenor" }; 解决办法...
C++错误:“const
char
*“
类型
的值不能用于
初始化
“
char
*“
类型
的实体
查了查资料,可能的原因是在VS2017版本
中
使用这种
char
*的表达方式会造成程序崩溃,所以VS2017对其进行了控件管理。 解决方案: 先将字符使用字符数组进行存储,再使用指针
char
image[] = "Source Image";
char
...
“const
char
*“
类型
的值不能用于
初始化
“
char
*“
类型
的实体
"const
char
*"
类型
的值不能用于
初始化
"
char
*"
类型
的实体的三种解决方法 意思很明确const
char
* 和
char
*
类型
不匹配 解决的方法有三种: 第一种:在visual studio
中
,在项目上右键,在弹出菜单上选择“属性”...
C++ 语言
64,654
社区成员
250,484
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章