char x [] = {} 和 char x [] = "" 区别

img

我理解的:
因为:"123456"是字符串
所以,scanf("%s", &password);这行代码中password以字符串的形式输出
我不理解的是:
为什么要定义char password[20] = {0}是数组
为什么不定义char password[20] = ”0“,这样子不直接是字符串了吗?
那么:
char x [] = {} 和 char x [] = "" 有什么区别呀?

衷心感谢各位的解答!!

char password[20] = {0},是数组的不完全初始化形式,第一个元素的ascii码值为0,剩余元素自动补0
char password[20] = "0",这是用字符型数组保存字符串,”0“就是一个字符串,因为字符串以‘\0’结尾,所以数组中第一个元素是字符0,后面的元素都是‘\0’
char x [] = {} 和 char x [] = "" ,准确说前者是用{}中元素初始化,后者是给字符型数组的数组名指向了一个地址,也就是”字符串“的首地址

上面scanf函数,你第二个参数不要加&取地址符了,数组名本身就是数组首元素地址

望采纳!谢谢!

char password[20] = {0},就是将字符串所有元素设置为ASCII码的0值
char password[20] = "0",这是将字符串第一个字符设置为字符'0',后面的字符都为ASCII码的0值
char x [] = {} 和 char x [] = "" 的效果是一样的。

scanf是输入啊,还有,字符数组可以用来存储字符串

看到你这个问题,那可能你对数组的初始化还不是很熟悉。你可以着重去学习下数组的初始化;
char password[20] = {0};
编译器会将这个数组空间所有内容置为0,这是字符数组初始化常用方式;
char password[20] = "0";
编译器会将这个数组的第1 个字符和第2个字符,设为0 和'\0',这也是字符数组初始化的方式之一,只不过,0 后面总是会跟着 \0,结尾符;

明白了否?