c语言中,a 和a[] 有什么区别

#include<stdio.h>
int main(void)
{
char str1[5];
gets(str1);//这里没有数字
printf("%s\n",str1);
}

a[]比a少一维,我具体给你解释下。
几个元素可以组成数组,而几个一维数组可以组成二维数组,如此一直增加维数。
比如说a[0]=2,a[1]=1,a[2]=3,组成一个一维数组,这就是a.但是,你要注意,a不是直接把这些东西都存着的,a只存首地址。
假设定义了一个二维数组a[3][3].这时候a[0],a[1],a[2]就不再是元素了,而代表的是一个有三个元素的一位数组,而此时的a就是一个二维数组。如果感觉这个有点困难没关系,等学习了指针什么的久很好理解这个了。
再说说你给的程序,你是不是在疑问为什么gets()直接给str1 就可以了?还有那个输出函数,为啥只用给str1就可以?
这得给存储方式有关,字符串就是字符的二维数组,gets()需要输入字符串的首地址,这个还算好理解,因为你应该学过了scanf()了,二者差不多,关键是为什么输出函数直接就写了str1呢?printf()之前你学的一般都是(printf("%d",a[1]));这种类型的。这里为啥要填一个地址参数呢?这是因为你前面是%s s代表字符串,字符串本身就是二维的,因此,你当然不能只给他一个单独的元素了,那么,你给了首地址他如何知道你这个字符串是啥呢?因为字符串都是顺序存储的,更重要的是字符串在结尾处有个标志“/0”,因此,你只要给力他首地址,他就知道从哪里开始,从哪里结束了。
纯手打,望采纳。追问

我要是printf("%d",ptr1) ;这是什么意思啊

追答

就是输出字符串str1

温馨提示:内容为网友见解,仅供参考
第1个回答  2022-12-01

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语言

第2个回答  2020-04-20
'a'是一个字符,"a"是两个字符,'a'和'\0'
比如,下面这个例子:
char
a1[1]={'a'};
char
a2[1]={"a"};
前者a1[0]='a',能编译通过
后者编译通不过,因为a2是一个元素的数组,而"a"有两个元素,分别是'a'和'\0'
补充:
'aa'这是错误的写法,单引号是字符的引号,它只能引一个字符的
"aa"这是正确的写法,双引号是字符串的引号,它有三个字符:'a','a','\0'
第3个回答  2012-11-29
char str1[5]; 表示声名一个数组,其长度为5(也就是所它最多能容纳5个char型元素)

gets(str1);获取用户的输出,注意不要超过4个字符,否则就会数组越界。其中的str1其实就是数组的地址。gets的函数原型为char *gets(char *s);其功能就是将用户的输入存入str1的数组中。

printf("%s\n",str1);将str1中的内容打印出来。

int a[5]表示声名一个数组。而a就是这个数组的地址(也是数组第一个元素的地址)。本回答被网友采纳
第4个回答  2012-11-29
a表示的是存储数组a[..]的首地址,而a[..]表示的是这个字符的值。
拿旅店比喻:你住在302房。那么a就表示302这个门牌号,而a[..]就表示你。假设服务员要叫你吃饭,就得先找到302这个房间,然后再把你请到大厅吃饭。操作系统无论是存储数据还是读取数据,都是先找到数据的首地址!

c语言中,a 和a[] 有什么区别
a[]比a少一维,我具体给你解释下。几个元素可以组成数组,而几个一维数组可以组成二维数组,如此一直增加维数。比如说a[0]=2,a[1]=1,a[2]=3,组成一个一维数组,这就是a.但是,你要注意,a不是直接把这些东西都存着的,a只存首地址。假设定义了一个二维数组a[3][3].这时候a[0],a[1...

在C语言中符号a和“a”的区别是什么?
a和“a”分别是字符常量和字符串常量,a存储时占用一个字节,而“a”包含字符a和一个转义字符,存储时占用两个字节。

c语言'a'和"a"有什么区别
结论:在C语言中,'a'和"a"有着明显的不同。'a'和"a"在本质、输出和底层机制上都有所区别,理解这些差异有助于我们更深入地掌握C语言的语法和特性。首先,从本质上看,'a'表示的是字符,而"a"则是一个字符串。'a'被单引号包围,代表的是字符' a',具有固定数值含义,即字符集中的序数值...

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

*a和a[]有什么区别?
a和a[]有什么区别:char a[]定义的是一个数组,char *a定义的是一个指针。1.char a[]="asdf",这时候数组a是存放在函数的堆栈中的,函数推出时这个堆栈就被清除了。2.char *a="asdf","asdf"是一个常量,不存放在堆栈中,而是放在一个特殊的段当中。3.可以用printf("0X%x\\t0X%x\\n",name...

C语言中'a'和"a"有什么区别
加单引号表示a这个符号的asicc码值,为一个整数,加双引号的就表示a这个字符,char类型。

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

C语言中'a'和"a"有什么区别?
结论在于,C语言中单引号('a')与双引号("a")在使用上有着显著的差异。首先,单引号内的字符如'a'实际上是一个字符常量,它代表的是字符集中的一个具体编码,例如ASCII编码中的65,对应的值会在输出时显示为'a'。而双引号("a")则是字符串,输出的是字符串内容本身,即字符'a'。输出上,'a'...

C语言中符号a和‘a’的区别是?
a是变量,在程序运行过程中值是可以改变的 'a'是字符型常量,在程序运行过程中没办法改变,只能读取

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

相似回答