char a和char a的区别,两者是指什么

2020-11-24 22:09:43 字数 5960 阅读 5631

1楼:匿名用户

没有一丁点区别

你甚至可以写成

char * a ;

编译器在词法分析的时候都会过滤掉的

2楼:匿名用户

两个都是指针,只不过用法稍有不同。

在c里只能用前者,连续定义的时候每个都要这么写,比如char *a,*b,*c;

在c++里两者都可以用,后者支持如下定义方法:char* a,b,c;,如此a,b,c都是字符型的指针。

选一个自己觉得最清楚的用就可以了。

3楼:匿名用户

应该这么说, 功能上没任何区别。

但是外表上有区别, 一个是*接近指针类型, 一个是*接近指针变量,但a总是一个char类型的指针。这种区别就好像你穿衣服和不穿衣服一样,总改不了你是个人,绝对不会成为其他的生物。

说的很生动吧

4楼:匿名用户

没有区别的,这样写只是为了方便定义

5楼:匿名用户

没区别,实际上都是 *a...

char* 和char的区别

6楼:

char a 表示 定义了一个bai变量,名叫a, 它是字符du类型(占用内zhi存的一个字节

dao)char a[1] 表示 定义了一个数内组,名叫a, 它是一个包含

容一个字符类型数据的数组,这个数组只能存放1个字符类型的数据。两者在不接触指针做函数参数的程序的时候功能是一样的。

7楼:育知同创教育

char* c与char *c 没有任何区别

char* c和char c 有区别,char c是一个字符,char* c是char指针,他可以带表一个字符串引用。

char *a和char* a有什么区别

8楼:匿名用户

没有什么不同,都

是定义一个指向char型的指针

但是要注意的是如果你想在一句话里面2个指针,那么正确的做法应该是char *a,*b;而不是char* a,b;

后面那个b只是一个char型变量

所以一般提倡使用第一种,避免糊涂搞错,当然如果你仅仅在一句话里面定义一个变量或者是在定义形参的话,那么第二种看上去更直接一点

希望对你有帮助

9楼:匿名用户

作用是一样的,区别是风格问题。写**多的人都有自己的风格,特别是大公司,要求风格统一,所以我们看到一段**风格与其他的不同时可以断定,这段是copy的

10楼:匿名用户

没有区别,完全一样。

11楼:冰戟玉语

c语言里有char* a这种格式啊,没见过,我只知道char *a表示定义了一个字符数组。

c语言中char *a[ ]什么意思,他和char (*)a[ ]有什么什么区别?

12楼:匿名用户

char *a表示的是数组a是一个指向char的指针类型数组,相当于a里面的每一个元素都实际值都是一个指向字符串的指针(即存储某个字符串的首地址)

后面这个你应该要问的是char (*a)吧,不然的话就和第一个一样了

char (*a) [n]表示的是指向一个元素为n的字符串数组的指针,说白了就是一个数组指针(指向数组的指针)。这个和函数指针有点像 int (*p) (int,int),表示指向返回值为int,并且含有2个int变量的函数

13楼:凌乱心扉

两者区别如下:

一、”读“”写“能力

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,防止产生野指针。

14楼:匿名用户

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类型

15楼:狂盗一枝梅

char *a一般用于函数中形参的声明,特别只用于一维数组;char(*)a不明白什么意思,难不成是将a数组强制转换成字符型???只是猜测,不要多想呵。

16楼:杨武威

char *a[ ]相当于char** a,是指针的指针;

char (*)a[ ] 是char类型指针数组;

(纯属个人理解,仅供参考)

17楼:小小的

含义是一样的。其实数组也是指针。都是声明了a这个char*类型数组。虽然有语法错误,但是意思是那样的。

18楼:匿名用户

char* a:a首先是个数组,数组中的每个元素是char*类型的,也就是每个元素是一个指向char类型的指针,至于char(*)a,圆括号一般是用作强制类型转换的,这种写法没有见过,编译器应该分析不出这个语法,会报错

19楼:快来见本大人

char *a[ ] 表示一个数组a,数组里的元素类型是char *

char (*)a[ ] 表示一个指针变量a,指向的变量类型是 char 的数组

char *a[n] 和char (*a)[n]有什么区别?

20楼:哇哎西西

一、”读“”写“能力

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";存于栈上,快。

21楼:匿名用户

由于[ ]比*优先级要高,因此a先与[n]结合,形成a[n]形式,这显然是数组形式,它有n个元素。然后和*结合,*表示此数组时指针类型的,每个数组元素都指向一个char型的变量。

*a[n] (*a)是一个指针有n个元素,每个元素为char型。也就是a指向的对象是有4个char元素的数组,即a是指向一维数组的指针。因记住,此时a只能指向一个包含n个元素的一维数组,a的值就是一维数组的起始地址

22楼:匿名用户

两者的区别是char *a定义了一个指针数字,即a的每个元素都是字符数组,也就是a是个二维数组;而char(*a)定义的是指向*[n]的指针,也就是指向二位字符数组的指针。

char *a,b;和char* a,b有什么区别?

23楼:匿名用户

完全没区别

都是a是char *类型,b是char类型的。

不用管*离谁近,只生效一次。

char *a和char* a有什么区别?

24楼:淋漓尽致的

没有什么不同,都是定义一个指向char型的指针但是要注意的是如果你想在一句话里面2个指针,那么正确的做法应该是char *a,*b;而不是char* a,b;

后面那个b只是一个char型变量

所以一般提倡使用第一种,避免糊涂搞错,当然如果你仅仅在一句话里面定义一个变量或者是在定义形参的话,那么第二种看上去更直接一点

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

25楼:

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

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

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

26楼:

char *a;

a = "abc";

和char *a;

*a = "abc";

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

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

27楼:太叔青芬俞环

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

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

//分配10个char*的空间

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

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

strcpy(p1[0],p)

//现在可以了

char *a[] 和(char *)a[]的区别

28楼:千门公子_云襄

char * a 定义一个字符型指针变量数组

(char *)a 将数组a强制转化为字符型指针变量数组

不知道说的对不对 说错勿喷

char和char的区别,char和varchar2的区别

1楼 char a 表示 定义了一个bai变量,名叫a, 它是字符du类型 占用内zhi存的一个字节 dao char a 1 表示 定义了一个数内组,名叫a, 它是一个包含 容一个字符类型数据的数组,这个数组只能存放1个字符类型的数据。两者在不接触指针做函数参数的程序的时候功能是一样的。 2楼 育...

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 ,这个是先给出大小才初始化...

貔貅和黑曜石两者有什么区别,貔貅和黑曜石两者有什么区别 10

1楼 匿名用户 黑曜石是一种雕刻貔貅的材质,也有和田玉的 翡翠的。不一样的 貔貅又被称为百解招财辟邪,在中国一直被称作为吉祥招财神兽,一直受到大家的青睐和喜欢。貔貅的正宗开光方法常见为寺院开光。道观开光。 自然开光和自己开光,目前正宗开光貔貅以吉照堂至尊貔貅口碑为最佳。 自己开光的貔貅顾名思义就是自...