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...