C语言c 字符串数组赋值数组多余部分赋值

C语言问题高手来回答。字符串数组名代表的是什么? 下面的这个字符串数组多余部分是存什么?_百度知道
C语言问题高手来回答。字符串数组名代表的是什么? 下面的这个字符串数组多余部分是存什么?
& str = &I love you?能和整形数组名一样加1表示下一个数字吗 ?问题2 char str[14]问题1
字符串数组名代表的是什么? char str[14]; str代表什么;;I love you!加上\0不够14个啊。
老师说形参数组不是真的数组 是个变量。。这是什么意思??、、
我有更好的答案
a' ,'b'}是一样的,剩下的就不改变原值,就是该内存段原本的状态(高级优化),或者声明时就把全部地址填入0 问题二是错误的,至少c语言规范没有这种语法,str是个地址,也就是int,无法用字符串来赋值问题三str等效于&str[0]是个地址,编译器会认为它是char格式的地址,所以你+1时的确会指向下一个字符地址,实际上str[14] = &ab& 与str[14] ={&#39
形参数组是一个指向数组的指针
那么可以随便修改吗? 如果是实参数组名的话是固定值 不能修改的。形参数组名能修改吗
话说实参与形参是什么? 比如我们调用函数时给出的参数既是实参 而我们定义函数时内部使用的变量既是形参 C的架构就是知道地址即能更改全部,如果你学过汇编,这一感觉就是,hook一个程序,只要其运行时一个地址即可 因为形参是函数里定义的,其名就指代其地址,我们当然能修改它 在函数运行时,str的地址通过复制给对应的形参的形式传入函数,我们也可以对其进行修改 主要的问题? 其实以上不是你最疑惑的地方,我觉得你只是对指针理解不够罢了 在编译原理中有说明 str[3]或者*(str
3)其实就是*(char*) (((char) str)
3 * sizeof (char)) 即最终所有操作都是变成地址运算完成的
采纳率:50%
它是输出字符;自动补充为&quotstr地址符和指针差不多;形参数组并不占内存;\0&可以和整形的一样,只不过它整形的是输出数字
实参数组名的话是固定值 不能修改的。那形参数组名能修改吗
1、数组名表示数组首地址,数组名可以进行加操作的2、剩下的位置没有进行初始化,是什么值未知3、就是形参的数组可以认为是一个指针
实参数组名的话是固定值 不能修改的。那形参数组名能修改吗
什么意思?数组名只是一个变量名,你想怎么改就怎么改
数组名代表数组首地址,str[14]代表字符串str是数组名代表首地址,可以和整形数组一样用。这样初始化系统在后面自动加\0,后面什么也不表示。后面是空的但是内存空间是申请了的
实参数组名的话是固定值 不能修改的。那形参数组名能修改吗
其他1条回答
为您推荐:
其他类似问题
字符串数组的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。c语言如何把函数传进来的字符串参数赋值给另一个字符数组? - 跟谁学
搜索你想学的科目、老师试试,例如“钢琴”搜索
&&c语言如何把函数传进来的字符串参数赋值给另一个字符数组?XK *addXK(char *id)
char name[20];
strcpy(name,id);
head5 = insertXK(head5,p);
} 程序没有报错可是运行到这里程序会挂掉。。 我用print调试过,就是strcpy(name,id);这一句有问题= =。。 T T 我在想是不是结构体字符串变量不应该这样赋值,还是说传进来的是一个指针,不能这样赋给结构体字符串变量?chellhoo有明
你的name只有20的大小,不知道你能否确保传进来的id字符串长度不会比他大。
你的指针p没有初始化啊,你把它传给了insertXK,是不是在里面提领指针报错啊
嗯。。。我忘了给p分配空间了 p = (XK*) malloc(sizeof(XK));(再见.gif谢谢了~
相关问题大家都在看最新提问
关注我们官方微信关于跟谁学服务支持帮助中心7926人阅读
C/C++(25)
C语言中,字符串可以赋值给字符指针变量,或者将字符串用字符数组保存。因为c语言没有直接对字符串提供语法糖方面的支持。而且C标准库很多方法处理字符串是以空字符结尾为前提的,这个必须要记住。
char *p,a='5';
双引号做了3件事:
1.申请了空间(在常量区),存放了字符串
2. 在字符串尾加上了’/0’
3.返回地址
这里就是 返回的地址
char *p = “hello”;表达式为什么可以,而把p换成数组,然后再赋值就不行了
字符串常量”hello”出现在一个表达式中时,”hello”表达式使用的值就是这些字符所存储的地址(在常量区),而不是这些字符本身。
所以,可以把字符串赋值给指向字符的指针p,而不能把字符串赋值给一个字符数组。
char a[10] = “hello”; //这样可以,这种情况是c语言初始化所支持的
如果写成char a[10]
然后 a = “hello” 这样就错误了。
同样是a数组,char a[10] = “hello”;这种是数组的初始化,和a[0] = ‘h’ a[1] = ‘e’…是一个道理
但是换成char a [10]
然后a = “hello”就不行了 “hello”赋值的值是一个地址,而a虽然也有地址,但是这与指针是不一样的,指针的值是地址,而数组的值虽然也是地址,但是却是一个常量,所以不能给常量赋值。
#include &stdio.h&
int main()
char *p = "hello";
printf("%s",p);
char a[10];
a = "hello";
error C2440: '=' : cannot convert from 'char [6]' to 'char [10]'
There is no context in which this conversion is possible
看到这样的错误提示,你是否会想到把char a[10]改成char a[6]呢
error C2106: ‘=’ : left operand must be l-value
运算符的左边应该是一个“左值”。所谓“左值”就是指在程序中占用内存空间、可以被修改的量,比如各种变量。
在使用指针的时候,指针可以自增,而数组名不能自增
编译器给数组分配了空间,数组a的地址就表示一个常量了,让常量自增这肯定是不行的。
继续扩展:
在指针自增的时候,编译器会自动识别类型,比如指针是指向int型的,想获取下一个的地址时,指针直接p++就行了,不要多此一举的p+4了
特别需要注意的是:
在void指针使用的时候,不能使用指针运算,因为void型编译器不能识别类型的长度(即指针所指对象的体积),p++这样就是不合法的,即不能进行数学运算,也不能使用*取值操作,想使用必须转换为其它的类型
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:445604次
积分:7207
积分:7207
排名:第3516名
原创:265篇
转载:12篇
评论:48条
文章:13篇
阅读:16110
(3)(2)(3)(12)(21)(16)(16)(13)(23)(37)(15)(14)(25)(1)(2)(3)(7)(1)(1)(16)(7)(9)(14)(15)(1)(1)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'请问怎样给数组中的一个字符赋值?【c语言吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:563,466贴子:
请问怎样给数组中的一个字符赋值?收藏
如题。比如说把 a 赋值给一个数组s[5]中的s[i].不能用s[i]='a',应该怎么弄?
自学编程,零基础怎么学习?如何系统,科学地学习编程,成为一名程序员...
表示对这个问题蛋疼,i是多少? 赋值不直接赋值你想干嘛?....
这是题目:请编写一个字符替换函数 substitute( ),它接收 3 个形参:两个字符型、一个字符串 型。在字符串中,查找是否出现第一个字符,并将其替换为第二个字符。函数返回 替换的次数。然后编写一个主函数,使得程序完整。这是我编的函数部分,调试的时候有问题:int substitute(char a,char b,char str[5]) {
int i,count=0;&&
for(i=0;i&5;i++)
if(str[i]=='a')
'b'=str[i];
int substitute(char a,char b,char str[],len) {int i,count=0;&&for(i=0;i&i++) { if(str[i]=='a')&&&{ str[i]='b';&&&count++; } }&&&&}
照这样改了以后,运行时直接跳过了输入字符串的步骤啊。
看看你的主函数
#include &stdio.h&#include &stdlib.h&int substitute(char a,char b,char str[],int len) {
int i,count=0;
&&for(i=0;i&i++)
if(str[i]=='a')
str[i]='b';
&&}int main() char x,y,s[5];
printf("请输入两个字符:\n");&&
scanf("%c,%c",&x,&y);
printf("请输入一个字符串:\n");&&
m=substitute(x,y,s,5);&&&
printf("替换的次数为:%d",m);
system("PAUSE");&&
return 0; }
#include &stdio.h&#include &stdlib.h&int substitute(char a,char b,char str[],int len){ int i,count=0;&&&for(i=0;i&i++) { if(str[i]=='a')&&&{ str[i]='b'; &&& count++; &&& }&&}&&&}int main(){char x,y,s[5];
printf("请输入两个字符:\n");&&scanf("%c%c",&x,&y); printf("请输入一个字符串:\n");&&stdin-&_cnt=0;//变相清空输入缓冲gets(s);&&&&&m=substitute(x,y,s,5);&&&printf("替换的次数为:%d",m);&&&system("PAUSE");&&return 0; }
谢谢,我已运行成功。对了,stdin-&_cnt=0具体有什么用途?
简单的理解,就是清空残留在 缓冲里面的'\n'.
登录百度帐号推荐应用

我要回帖

更多关于 java 字符串数组赋值 的文章

 

随机推荐