C语言中,char a a“abc”if(aabc”)为什么恒为假

2021-02-26 07:49:25 字数 3290 阅读 6563

1楼:千锋教育

这样比较的只是内存地址

正确的字符串比较方法是使用strcmp(char *s1,char *s2)函数比较,需#include

当strcmp()返回0则s1和s2是相等的

2楼:快乐家____欢乐

存储字符要用单引号,不是双引号

c语言,char *a;a="abc"abc为什么可以直接赋值给a?a分配动态内存

3楼:

a=(char *)malloc(10*sizeof(char));这一行在这个bai**中千

du万不能要:如果这zhi样写,申请

dao的10个字节还没有用就把它内的标容识指针a用a="abc";指向了别处,那10个字节就释放不了了,会产生所谓内存泄漏问题。有char *a;和a="abc";就非常好了。在a是char *型指针时,a="abc";的意思不是将字符串abc赋给a,而是“创建一个常字符串abc,并将首地址(第一个字符的地址,这里就是a的地址)赋给指针变量a。

以后就可以通过指针a来操作字符串abc了,这里指针a也不能再让它指向别处,否则abc就再也找不到了......希望能帮到你。

4楼:听不清啊

a=(char *)malloc(10*sizeof(char));

a="abc";

这两个语句bai重复给 a 赋值du

,前一个赋值就作废zhi了,申请到的空间dao也就被丢弃了。

下面版一个赋值是让a指向一

权个系统中字符常量区的地址(只是把一个地址赋值给a,并不是把字符串赋值给a)。

5楼:匿名用户

因为字符指针变量可以存储字符串的首地址。所以这条赋值语句实质是把字符串“abc”的首地址存入字符指针变量a中。并不需要分配动态内存。

6楼:匿名用户

就算不动态分配也可以直接赋值啊。建议先学习一下什么是指针,搞清楚指针和数组的区别。

7楼:良德廉永安

1、之所以要bai动态的分配内

du存是因为有zhi些时候在编写程序的dao时候无法确定专其占用的内存大小,这个属时候就可以动态的分配给其一段内存空间,等到程序运行时在具体确定所需要的内存单元空间。

2、动态分配的内存空间是在堆(heap)上申请的,这部分的内存空间是有程序员自己管理的,需要程序员自己负责这些内存空间的释放,使用free函数。

char *a;a="abc"与char*a;*a="abc"char *a="abc"有什么区别吗?

8楼:

1,char*a;*a="abc" 是错误的, *a是字符,不是字符串。

2,另外两句完全一样。虽然编译能通过,但是你这句本身就是错误的:字符串定义应该是 const char *a = "abc"; 因为字符串储存在不可读内存中,所以c语言中字符串的的返回值是 const char*.

3, 如果要得到能读写的字符串请使用字符数组: char a = "abc"

9楼:

char *a;

a = "abc";

和char *a;

*a = "abc";

作用相同 就是将字符串数组的首地址给char 指针变量a(假设16位地址值,要被截断成8位

char *a =“abc” 可以看作是 char a="abc";

10楼:太叔青芬俞环

不行p1没有初始化(也就是常说的野指针),它指向的空间是未知的先初始化:

p1=char(**)malloc(10*sizeof(char*));

//分配10个char*的空间

p1[0]=(char*)malloc(sizeof(a));

//给p1[0]分配合适空间

strcpy(p1[0],p)

//现在可以了

c语言中 char a='a',abc; 是什么意思?

11楼:匿名用户

定义了两个char类型的变量: a和abc

其中变量a在定义的时候顺便给它赋了初始值: 'a' (字符a)

12楼:郗斌丙翠柏

chara=

"abc";

中a是数组名,编译时为其分配4个char单元,前3个单元用“abc"中的字符对应初始化,最后一个存放'\0';char*p=

"cdef";在编译时先生成"cdef"字符串常量,存放在常量区,并将首地址(c的地址)赋给char

*型指针变量p。从以上可见,a是数组,所以其中的元素abc都可变,可以重写;而p指向的是常量,不可更改。

c语言中,char a[] = "abc"; char *p = "cdef";

13楼:

char a = "abc"; 中a是数组抄名,编译时为其分配

袭4个char单元,前3个单元用“abc"中的字符对应初始化,最后一个存放'\0';char *p = "cdef";在编译时先生成"cdef"字符串常量,存放在常量区,并将首地址(c的地址)赋给char *型指针变量p。从以上可见,a是数组,所以其中的元素abc都可变,可以重写;而p指向的是常量,不可更改。

14楼:

区别就在于,数组名a和指针变量p虽然本质上都是地址,但是数组名a它的地址是不变的

内,即它是一个常指针,容指向是固定不变的;但是指针p是个指针变量,它的指向是可以改变的,你可以将a的地址赋值给p,即p=a;那么指针p就指向了数组a的首元素地址了,但是数组名a它在赋值语句中是不能做左值的,因为它是一个常指针,和一个常量没什么区别。

15楼:匿名用户

a定义是一个字符串

数组,*p定义的是一个字符串常量。数组名a是一个常量,指针p是一个变专量,属当用作指针时,都能使用a+1,p+1,但是p++正确,a++错误,

通过a能改变数组里的元素的内容,但是不能通过p来改变它指向的字符串,因为常量是不能更改的。a[2]=d正确,p[2]=d错误

16楼:匿名用户

sizeof(a)=4 sizeof(p)=4 这里不一样

c语言char *a=0x800100;问a+5等于多少

17楼:匿名用户

指针+1是+指针指向空间大小

sizeof(char)是1对应是加1*5, int *的话就是4*5

c语言中int a 1,b 2,c c 1.0 b a输出结果为什么

1楼 匿名用户 结果是c的值是0 因为1 0 b 都会转换位浮点型,结果是0 5 0 5 a 也是会把a转为浮点型,结果是0 5 而c是整形,会对右边运算的结果取整,所结果就是0了。 假如 int a 1 b 2 c 3 表达式a b c的值是1还是0 为什么? 2楼 岔路程序缘 在c语言中,1代表...

c语言二维数组a,为什么a和(a+1)等

1楼 a 1 指针取得不就是地址吗 2楼 匿名用户 a 1 是定义的指针, 因为数组的起始地址a 0 可以用a来代替 所以a 1 和 a 1 是同一个地址 3楼 首先a代表整个数组的首地址没问题吧,a 1就是把地址下移, a 1 就是取其地址的内容。这回可以理解了吧! c语言中二维数组a i j 为...

在C语言中“a b”是什么意思,c语言中,a^b是什么意思?

1楼 匿名用户 a 异或 b 按位异或 比如 a 为 5 0101 b 为 7 0111 0010 对应位相同为0, 不同为1 希望对你有帮助。谢谢 c语言中,a b是什么意思? 2楼 匿名用户 按位异或, 例如 include int main 输出结果是8 1010 10 0010 2 1000...