C语言:数组,*a和&*a有什么区别?

数组:a
在Debug中发现*a和&*a所指向的内存地址和值完全一样,它们有什么区别?

1、本质区别

双引号里面的是字符串, 而单引号里面的代表字符。

2、输出区别

str = “a”输出的就是a这个字母;

str = ‘a’输出的测试65

3、底层区别

用单引号引起的一个字符实际上代表一个整数,整数值对应于该字符在编译器采用的字符集中的序列值。

扩展资料:

C 语言中,逗号(,)也可以是运算符,称为逗号运算符(Comma Operator)。逗号运算符可以把两个以上(包含两个)的表达式连接成一个表达式,称为逗号表达式。其一般形式为:

子表达式1, 子表达式2, ..., 子表达式n

例如:a + b, c = b, c++

逗号运算符的优先级是所有运算符中级别最低的,通常配合 for 循环使用。逗号表达式最右边的子表达式的值即为逗号表达式的值。上例中,c++ 的值(c 自增之前的值)即为该表达式的值。

逗号运算符保证左边的子表达式运算结束后才进行右边的子表达式的运算。也就是说,逗号运算符是一个序列点,其左边所有副作用都结束后,才对其右边的子表达式进行运算。因此,上例中,c 得到 b 的值后,才进行自增运算。

参考资料来源:百度百科-C语言

温馨提示:内容为网友见解,仅供参考
第1个回答  2009-03-20
C语言, 指针才有 *a 形式,普通的变量没有 *a 形式。
C语言 没有 “引用”,C++ 里才有 “引用”形式
C语言, 指针没有 &a 形式, 普通的变量才有 &a 形式.

C语言,数组:a, 没有你给的 &*a 形式,但可以有 *&a 形式.
例如:
int a[]={1,2,3};
printf("%d ",*&a[1]);

这里 的 *&a[1] 相当 *(&a[1])
&a[1] -- 算出a[1]的地址
*(a[1]的地址) -- 取出 a[1]地址单元里的值,就是 a[1]
所以打印出 数值 2。本回答被提问者采纳
第2个回答  2009-03-20
因为&是一个引用符号,&*a是对*a的引用,被引用的对象和引用的对象所在的内存地址一样,值当然也一样。
二楼说对了,C++可以用引用,C只能传指针。
第3个回答  2009-03-20
语言, 指针才有 *a 形式,普通的变量没有 *a 形式。
C语言 没有 “引用”,C++ 里才有 “引用”形式
C语言, 指针没有 &a 形式, 普通的变量才有 &a 形式.

C语言,数组:a, 没有你给的 &*a 形式,但可以有 *&a 形式.
例如:
int a[]={1,2,3};
printf("%d ",*&a[1]);
第4个回答  2023-05-02
*a是根据a这个变量里的值,当作地址,去取这个地址里存放的内容。
&a是取a这个变量在内存里的地址

C语言:数组,*a和&*a有什么区别?
1、本质区别 双引号里面的是字符串, 而单引号里面的代表字符。2、输出区别 str = “a”输出的就是a这个字母;str = ‘a’输出的测试65 3、底层区别 用单引号引起的一个字符实际上代表一个整数,整数值对应于该字符在编译器采用的字符集中的序列值。

int a[3][4]; 那么 a,*a,**a分别代表什么?
a 代表 数组的首地址。a 代表 &a[0][0] 的地址。a 代表 a[0][0] 的 值。--- c 语言 语句中 方括号 不是标点符号,而是 运算符!关于 方括号 的 恒等式:a[j][i] = (a[j])[i] = ( *(a+j))[i] = * ( *(a+j) + i)我们把 j=0,i=0 代入 就可看出 *...

求问c语言大神: int a[3][4] 那么a,*a,&a是什么类型?有什么区别?
数组元素地址是连续的 a是表示二维数组的首地址,其值相当于 &a[0][0] 本身是常量指针 不能改变其值。a是行的首地址 也就是&a[0] 如果你把(*a)+1 那么值就是 &a[1]&a值和a一样,但意义不同,a表示数组首地址,a+1就变成第二个元素地址(int 每个元素地址相隔4)&a表示整...

C语言一维数组a和&a的区别
简单的说,a是数组首元素的地址,即a 等于 &a[0]&a是整个数组的首地址。这两个值相同,但代表了不同的意思。如:a+1,偏移的是一个数组元素的大小,而&a+1,偏移的是整个数组的大小

C语言-数组a 和&a 的区别
探索后发现,`a`表示数组`a`的起始地址,而`&a`表示整个数组`a`的地址。注意`&a`结果与`a`结果相同,这表明在C语言中,数组名实际上是一个指向数组首元素的指针。理解这一点有助于深入掌握数组与指针之间的关系。关注微信公众号-嵌入式Linux,获取更多技术知识。分享有价值内容,请转发,点赞,您...

C语言中char *a[ ]什么意思,他和char (*)a[ ]有什么什么区别?
char *a[]表示的是数组a[]是一个指向char的指针类型数组,相当于a[]里面的每一个元素都实际值都是一个指向字符串的指针(即存储某个字符串的首地址)后面这个你应该要问的是char (*a)[]吧,不然的话就和第一个一样了 char (*a) [N]表示的是指向一个元素为N的字符串数组的指针,说白了就...

C语言指针数组中的 *a[]和 (*a)[]的区别是什么?
a[] 是一个指针数组,也就是一个数组,里面有N个指针 (*a)[]是一个指向数组的指针,也就是一个指针,指向一个数组

C语言中*a是什么意思啊?和数组一个用法吗?
a是对指针的操作方式 意思是取值,也就是a指向空间里面的值 可以和数组类似 a就等效于a[0]比如 int *a;int b=1;a=&b;那么*a就是b的值 也就是1

C语言中 *与& 在指针及数组中的含义 望详细具体
数组也是一样的 只不过数组名表示一个数的地址而已~举个例子 有个数组a[10]a[0]存放在地址为1000的地址位上 那么a就等于1000 因为在数组中a就等价于&a[0],即第一个元素的地址&a[0] = 1000 然后*号是&号的逆运算 而*a就是*&a[0],所以*与&一正一逆抵消,所以*a = *&a[0] = a...

关于c++中的a、*a、&a问题
int a 定义名为a的整形变量 int &a 定义一个引用整形变量(再传参数是与上个不同)int *a 定义一个整形变量的指针 int a[] 定义一个数组 char *a 定义一个字符型的指针 char *a[] 定义一个字符型指针数组 指针就是地址 假如你是个变量,你家的地址值就是指针啦哈哈 ...

相似回答