1楼:匿名用户
char a 表示 定义了一个变量,名叫a, 它是字符类型(占用内存的一个字节)
char a[1] 表示 定义了一个数组,名叫a, 它是一个包含一个字符类型数据的数组,这个数组只能存放1个字符类型的数据。
两者在不接触指针做函数参数的程序的时候功能是一样的。
2楼:萢萢
char a是字符,char a[1]是字符数组。
c语言中char *a[ ]什么意思,他和char (*)a[ ]有什么什么区别?
3楼:匿名用户
char *a表示的是数组a是一个指向char的指针类型数组,相当于a里面的每一个元素都实际值都是一个指向字符串的指针(即存储某个字符串的首地址)
后面这个你应该要问的是char (*a)吧,不然的话就和第一个一样了
char (*a) [n]表示的是指向一个元素为n的字符串数组的指针,说白了就是一个数组指针(指向数组的指针)。这个和函数指针有点像 int (*p) (int,int),表示指向返回值为int,并且含有2个int变量的函数
4楼:凌乱心扉
两者区别如下:
一、”读“”写“能力
char*a="abcd";此时"abcd"存放在常量区。通过指针只可以访问字符串常量,而不可以改变它。
而char a[30]="abcd";此时"abcd"存放在栈。可以通过指针去访问和修改数组内容。
二、赋值时刻
char*a="abcd";是在编译时就确定了(因为为常量)。
char a[30]="abcd";是在运行时确定
三、指向地址所存储的值不同。
对于char**p1,*p1的类型为char*型,而**p1的类型才是char型。
对于char*类指针p2,*p2就是char型。
char*a="abcd";存于静态存储区。在栈上的数组比指针所指向字符串快。慢
char a[30]="abcd";存于栈上。快。
四、内存分配方式
内存分配有三种:堆区和栈区、静态存储区。功能不同;使用方式也不同。
1、栈:就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。
2、堆:就是那些由new或malloc分配的内存块,在不适用时,要手动用delete或free来释放内存区域。
3、静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态数据、全局数据和常量。
但是,良好的编程习惯是:如果某动态内存不再使用,需要将其释放掉,并立即将指针置位null,防止产生野指针。
5楼:匿名用户
char *a是错误的,只能定义char *a[任意整数];
或者char *a[4或者其他整数或者不填]=“abc”;
或者char *a[3或者其他整数或者不填]=;
或者char *a[2或者其他整数或者不填]=;
或者char k,j,l,*a[3]=;
char (*)a也是错误的,只能定义为(char *)a[任意整数];
首先说下第一个,以char *a[4];为例, 这语句是定义一个指针型数组,他的元素都是指针。指针是可以直接来指向一个字符串的,用法是char *p="good。指针型数组中每个元素都是指针,则每个元素都可以去定义一个字符串或者是定义一个变量;所以如果有一个a[4][4]=; 现在就可以用char *p[4]=; 这样的好处是节约了空间,一个数组被定义下来后,内存就被分配了,如果这个数组在后面的语句中不再使用了,那它就占着空间,使得源文件很大,如果使用指针数组,就很容易解决这个问题了,因为只要让指针数组在指向其他的字符串或者其他的一些变量 ,这样原来的空间就被释放了
(char *)a[4]的意思是将指针型数组a中的元素a[4]强行转化为char类型
6楼:狂盗一枝梅
char *a一般用于函数中形参的声明,特别只用于一维数组;char(*)a不明白什么意思,难不成是将a数组强制转换成字符型???只是猜测,不要多想呵。
7楼:杨武威
char *a[ ]相当于char** a,是指针的指针;
char (*)a[ ] 是char类型指针数组;
(纯属个人理解,仅供参考)
8楼:小小的
含义是一样的。其实数组也是指针。都是声明了a这个char*类型数组。虽然有语法错误,但是意思是那样的。
9楼:匿名用户
char* a:a首先是个数组,数组中的每个元素是char*类型的,也就是每个元素是一个指向char类型的指针,至于char(*)a,圆括号一般是用作强制类型转换的,这种写法没有见过,编译器应该分析不出这个语法,会报错
10楼:快来见本大人
char *a[ ] 表示一个数组a,数组里的元素类型是char *
char (*)a[ ] 表示一个指针变量a,指向的变量类型是 char 的数组
c语言中 定义 char a=1 和char a=“1”和char a=‘1’什么区别?一定采纳
11楼:风雷雪电
第一bai
个char a = 1,则a的值du为数值1。
第二个语法zhi
错误。第三个char a = '1',则daoa的值为字回符'1',对应的数值请参考ascii码,答是数值49。此时:
printf("%d",a);//得数值49printf("%c",a);//得字符1
计算机c语言中,那个char a[20]和char a,有什么区别啊,**等解答,懂了第一时间采纳
12楼:匿名用户
char a[20] 是声明一个大小为20的字符数组 a,
char a 是声明一个字符a
13楼:
char a 代表字符常量,而char a [ ] 代表字符数组。
14楼:匿名用户
char a
开辟一块内存,存储一个char类型的数据。直接使用a访问该内存中的数据,&a表示这块内存的首地址
char a[20]
开辟一块内存,存储20个char类型的数据。使用下标a[i](0<=i<=19)访问该内存中的数据,如果单独使用a表示这块内存的首地址
15楼:
char a;表示一个字符
a = '0';
char a[20];表示一个字符数组
a = ;
16楼:雨中笨猪
一个是字符数组 一个是单个字符
17楼:苍老师的恋爱
char a[20]:是定义一个字符数组,里面有20个字符元素,下标从0到19即a[0],a[1] .. a[19]
而char a:就是定义个字符变量
18楼:炜炜
char a[20] 创建一个字符数组,可以存20个字符
char a 创建一个字符
char *a和char* a有什么区别?
19楼:匿名用户
没有什么不同,都是定义一个指向char型的指针但是要注意的是如果你想在一句话里面2个指针,那么正确的做法应该是char *a,*b;而不是char* a,b;
后面那个b只是一个char型变量
所以一般提倡使用第一种,避免糊涂搞错,当然如果你仅仅在一句话里面定义一个变量或者是在定义形参的话,那么第二种看上去更直接一点
希望对你有帮助
在c语言中char a[]={'a','b','c'}和char a[]="abc"有什么区别 它们各在内存里占多少和字节
20楼:匿名用户
char a= 这是一个字符数组,占3个字节。 char a="abc" 则不同,它是一个字符串,最后还有一个'\0'结束符,占4个字节
c++里char"a 0和char"a 0有什么区别
1楼 匿名用户 c 里面初始化一个字符必须打上单引号 也就是类似于第一个 char a x 。第2个是不正确的。 c 里char a 0 和char a 0 有什么区别? 2楼 小傻 char a 100 和char a 区别如下 第一个是 100个字节 全部初始化为 0 ,这个是先给出大小才初始化...
c语言中"定义"char"a 1"和char"a“1”和c
1楼 风雷雪电 第一bai 个char a 1,则a的值du为数值1。 第二个语法zhi 错误。第三个char a 1 ,则daoa的值为字回符 1 ,对应的数值请参考ascii码,答是数值49。此时 printf d a 得数值49printf c a 得字符1 c语言,char a 和char ...
char a和char a的区别,两者是指什么
1楼 匿名用户 没有一丁点区别 你甚至可以写成 char a 编译器在词法分析的时候都会过滤掉的 2楼 匿名用户 两个都是指针,只不过用法稍有不同。 在c里只能用前者,连续定义的时候每个都要这么写,比如char a b c 在c 里两者都可以用,后者支持如下定义方法 char a b c ,如此a ...