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这个变量在内存里的地址
相似回答