为什么*a="china " 后面不能加上另外一个字符数组
char *a=“china”仅表示将字符串"china”的首地址赋给指针变量a,不能分配一定的内存空间,而数组a[20]就给出了内存空间,因为你的函数strcat 中要对main中的实参a[20]进行操作了,没有内存空间,或者空间不足都是没办法操作的。
你可以做个测试,把数组a[20]改为a[6],空间刚好能容纳字符串"china",程序运行后也会出错的,因为函数strcat在操作中会出现数组a 的空间不够的情况。而a[20]就不会有问题
先不说逻辑,语法就是错误的:a[i][10]是只有一外字节的元素,怎能放得下字符串China?编译都不会过!a[0][10]也是一个一字节元素,用不着调用memset来初始化,比如想让它的值是字符r,写个a[0][10]='r';就可以了——不过声明的是char a[4][10],根本就不存在a[0][10],只有a[0][9]。
说法一:
早在东汉时期,古人就在昌南(现在的景德镇)建造窑坊,烧制陶瓷。到了唐朝,由于昌南土质好,先人们又吸收了南方青瓷和北方白瓷的优点创制出一种青白瓷。青白瓷晶莹滋润,有假玉器的美称,因而远近闻名,并大量出口欧洲。
十八世纪以前,欧洲人还不会制造瓷器,因此中国特别是昌南镇的精美瓷器很受欢迎。在欧洲,昌南镇瓷器是十分受人珍爱的贵重物品,人们以能获得一件昌南镇瓷器为荣。就这样欧洲人就以“昌南”作为瓷器(china)和生产瓷器的“中国”(China)的代称,久而久之,欧洲人就把昌南的本意忘却了,只记得它是“瓷器”,即“中国”了。
西方瓷器原本是从中国输入的。明朝的时候,大批的中国瓷器产品就开始输往西方世界。波斯人称中国的瓷器为chini,欧洲商人在波斯购买中国瓷器也同时把一词带回了西方。后来,他们又把chini改为china,并且把生产china的中国也一并称为China。欧美人谈到China的时候,往往联想到China(中国)是china(瓷器)之乡。
说法二:与瓷器无关——中国为什么叫China?
新民晚报2004年8月3日16版介绍景德镇瓷文化。其文说,宋元两代景德镇的制瓷技术已经传到朝鲜、日本、越南。又说,明清两代瓷器大量出口,经阿拉伯传到欧洲。这些史实,我无异议。唯可疑者,其说china由来,文云:“民间历来有几种说法。一种说法是china系根据秦字读音转化而来。但在景德镇最为流行的说法是china是汉语昌南(原景德镇名)的音译。随着景德镇精白瓷大量流传到海外,才使得瓷(china)成为中国的代名词。”
说china最初是昌南地名译音,我觉得很新鲜。景德镇原名昌南镇,在宋真宗景德年间(1004年起)改名景德镇。此时所制瓷器已负盛名,特供御用。按照“景德镇最为流行的说法”推论,其后本镇瓷器外销朝鲜、日本、越南,又其后经阿拉伯远销到欧洲,皆以产地昌南作为商品名称。昌南两音,口碑远播,写成法文便是chine,写成英文便是china。china又回译成汉文瓷器。瓷器名声响遍全球,欧洲人就把中国也叫作瓷器,而大写其字头,成了China。这个推论亦能自圆其说。
然有极大障碍,景德镇人难以克服。就是至今无人能够否认英文China起源于印度古梵文“支那”。这个支那又作脂那、至那,三千年前就出现了。想想三千年前是什么意思吧。那就是说,什么昌南,什么瓷器,还得在娘胎里静待两千多年,方能一朝分娩出世。资格太嫩了,昌南瓷器争什么。三千年前,不但焚书坑儒的秦朝,就连春秋五霸的秦国,都还不存在,China怎么能是秦的译音呢?论资格,支那之名比周朝还要老,怎轮得上替暴秦争面子呢?
请容详说支那由来。唐代义净法师《南海寄归内法传》云:“西国名大唐为支那者,直是其名,更无别义。”他显然不同意China与昌南瓷器或与秦朝挂钩。隋代慧苑法师《华严经音义》云:“支那,翻为思维。以其国人多所思虑,多所制作,故以为名。”他则直探古梵文“支那”的原义。两位僧人生在隋唐,那时昌南尚名新平,所制瓷器亦未颖出。
二十世纪之初,China一词起源问题,学界曾经讨论,众说纷纭,未定一是。文僧苏曼殊(1884-1918)通英、法、日、梵诸文,曾撰有《梵文典》。他认为China起源于古梵文“支那”,初作Cina,用来指我华夏。他研读三千年前的古印度史诗《摩诃婆罗多》和《罗摩衍那》,发现支那一词最早见于这两部著作,其原义为“智巧”。他认为,这是三千四百年前印度婆罗多王朝时彼邦人士对黄河流域商朝所治国度的美称。“智巧”与慧苑所说之“思维”内涵略有不同,想系词义因时代而演变所致。
外邦对我华夏称呼,最早曰支那Cina,其后曰拓跋Tabac,最后曰契丹Kitai。今之China即支那,先是国名。明代中期葡萄牙人贩瓷器到欧洲,称其商品名曰Chinaware,若汉译应该是“支那瓦”。陶瓷产品,古称瓦器。此处ware应是瓦之译音。支那瓦者,中国瓷也。China放在ware之前,可知China国名,初无瓷器一义。后来省掉ware,简称为China,才小写其字头,获得瓷器之义。这已经是晚近的事了。
景德镇人不必失望。你们不是还有浮梁县的高岭村吗?没人替它争取,它却进入洋文。在英文里,Kaolin义为瓷土。景德镇瓷器最初用高岭村出产的粳米白泥作原料,称高岭土。Kaolin乃高岭之译音也。后来欧洲人制瓷器,凡是瓷土,不管哪里产的,皆以高岭称之。贵村之名于焉“走向世界”,不亦壮哉。
char a[20]="china"; 会在栈中分配20单元,并填上"china";
char *a=“china” 栈中不分配单元,就地用"china"静态区的6个单元(含尾0),
太少。用后者的后果是:因单元太少,strcat是字符串相加后破坏了"china"后面的
其它单元了!
char a[]="china"; 会在栈中分配6个单元,strcat因字符串添加同样会破坏栈中的其它
单元,可能一时不致命,暂时没出现大问题而已。
a[20]是长度为20的数组,a[]是自定义的长度!
而*a是指针变量,它只能指“china”的第一个字符,也就是说它只能找打“c"其余的就找不到啦!
7×a=4×b=5÷c时a和b成什么比例?
7a=4b,a=4\/7b,所以a和b成正比例。
aa*是什么?
AA*=A*A=|A|E 当A的秩为n时,A可逆,A*也可逆,故A*的秩为n;当A的秩为n-1时,根据秩的定义可知,A存在不为0的n-1阶余子式,故A*不等于0,又根据上述公式AA*=0而A的秩小于n-1可知A的任意n-1阶余子式都是0,A*的所有元素都是0,是0矩阵,秩也就是0。应用:利用伴随矩阵求...
数字电路中互补律中说道A*A=0 A+A=1,等幂律又说A*A=A A+A=A.A+A怎 ...
这是‘布尔代数’,也叫(0,1)代数,数字电路中的逻辑判断常用它们,也叫逻辑代数。其中的变量只能取两个值,非0即1.布尔代数的公式有:AA=A \/\/: 一般没有AA=0, 除非A=0;A+A=A \/\/: 无论A=0还是A=1;A+A=A;A=0时A+A=A=0; A=1时,A+A=A=1 AB+AB=AB A+A'=1...
C语言:char*a,*b; *b*=a是什么意思? 如图所示
有错,6 C:\\Users\\Administrator\\Desktop\\δÃüÃû1.cpp invalid operands of types `char' and `char*' to binary `operator*'修改为:include<stdio.h>void fun(char *a, char *b){ while(*a == '*') a++; while((*b = *a) != '\\0') ...
线性代数中伴随矩阵性质AA*=A*A=|A|E中,矩阵中|A|和0怎么来的?
【定义】设A是数域上的一个n阶方阵,若在相同数域上存在另一个n阶矩阵B,使得: AB=BA=E。 则我们称B是A的逆矩阵,而A则被称为可逆矩阵。设Aij为元素aij的代数余子式,定义A*=(Aij)为矩阵A的伴随矩阵。
求线性代数 AA*=A*A=|A|En 的详细证明过程
﹙ AA*﹚﹙i,j﹚=∑[1≤k≤n]aik﹙A*﹚﹙k,j﹚=∑[1≤k≤n]aikAjk=|A|δij=﹙|A|En ﹚﹙i,j﹚∴ AA*=|A|En ﹙A*A﹚﹙i,j﹚=∑[1≤k≤n]﹙A*﹚﹙i,k﹚akj=∑[1≤k≤n]Akiakj=|A|δij=﹙|A|En ﹚﹙i,j﹚∴ A*A=|A|En 式中:i≠j时δij=0,...
以下正确的字符串常量是什么?
答案为D。D是一个空字符串,仅有字符串结束标志的字符串。A中第一个字符是'\\\\',即字符\\,而第二个字符'\\'中的斜杠表示开始某个转义字符,其后必须还有有效的和它能组成转义字符的其它内容,但现在没有,所以错。
c语言中**a(任意变量)表示什么意思?
\/\/注意在不同位置,意思不相同。我举例说明。int i=5;int *ip=&i;int **a=&ip;\/\/这儿表示a为指向指针的指针,a指向指针变量ip,ip指向i,因此a单位指向i。printf("%d\\n",**a);\/\/表示输出i的值5。
*a=p和*a=&p的区别是什么呀 *a=p是不是相当于a=&p
a=p:a是一个指针,将p的值赋给a指向的位置。例如b = 1,a是指向b的指针,即a = &b,假设p=2,执行完*a = p后, b = p = 2 a = &p,接上面的例子,此时,假设b指向c,a指向b,即 *a = b,那么在执行完*a = &p,即b = &p后,b就不再指向c了,b变成了p的指针,指向...
已知A矩阵可逆,利用A*A=AA*=\/A\/E来证明A*也是可逆的,这一步看不懂,求...
A*为伴随矩阵,所以A*A=\/A\/E,对等式两边求行列式,\/A\/E中A的行列式的值乘到了E对角线上每一项,在求行列式的值时,对角线上元素相乘,所以结果是\/A\/的n次方,因为A可逆,所以\/A\/不为0,所以\/A\/的n-1次方不为0,即\/A*\/不为0,所以A*可逆 ...
钭试奥利: char *a="china"这里在定义变量的时候就对指针变量进行了初始化,china*a;a="china";这里的a="china"实际上就是将字符串"china"所占的存储空间的首地址赋给了字符指针变量a.
昌江黎族自治县15336305093: char *a="china";等价于char *a;*a="china";吗?请说一下原因 - ?
钭试奥利: 请楼上不要误导人! 当然不等价char *a;*a="china";这里a只是指向一地址,并没有分配实际内存所以 *a="china";就是错的如果写成char a[20];*a="china";就是对的 你前面 的 char *a="china"; 的意思是把字符串 china";的首地址赋给指针a 手写答案 欢迎采纳!
昌江黎族自治县15336305093: C语言小问题 - ?
钭试奥利: 1.char *a="china"; 等价char *a; *a="china"; 这句话不对的,c语言里面没有*a="china"这种用法的,要进行字符串的复制要用strcpy(str1,str2)这个函数.而你说的为什么第三句是错的,也就是这个原因,就是字符串之间不能直接用=号赋值,必须用strcpy这个函数
昌江黎族自治县15336305093: C语言 第二个printf语句为什么输出的是China啊 - ?
钭试奥利: 书应该是印刷错了 p='\0'应该是*p='0'很简单,循环的作用就是使p指向a后面那个空格.*p='\0'使得内存中原来是那个空格的地方变成了'\0' 可以这么理解,现在内存中是这样的:China'\0' Beining ......c语言中'\0'表示字符串的结束 printf输出一个字符串的时候从p指向的地方开始输出内存中的字符,直到遇见'\0',那自然就是输出China
昌江黎族自治县15336305093: char *a=“china”;等价于 char *a;*a=“china”; 为什么不对呢 - ?
钭试奥利: char *a=“china”; //:表示=》定义一个char类型指针a, 注意,在定义的时候赋值,这其实是做了两个工作. 等同于char *a; //定义一个指针变量 定义好的指针变量是a, 而不是*a; 所以*a=“china”; 是不对的. *符号,在定义的语句中,表示声明了一个指针的类型, 符号,在赋值语句中,表示一个运算,取这个变量的指向内容.
昌江黎族自治县15336305093: 请解释一下C语句"char a[10],??p;p=a=“china”"的含义.?
钭试奥利: char a[10], *p; p = a = "china"; 是错的赋值!~ 原因: char *p; p = "china"; 这里的p是在静态区分配的内存,也就是说p是指向字符常量的指针. 而在p = a = "china";中,"="运算符是从右向左结合的,所以是将"china"的首地址赋值给a,而a是char型数组的首地址,这是把字符常量的地址赋值给字符变量,所以错误!~
昌江黎族自治县15336305093: C语言问题: int a=“china”; 这样的语法是对的吗 - ?
钭试奥利: 这样的语法是错误的,应该用char a[]="china";或者char *ch="china";
昌江黎族自治县15336305093: C语言 请问这里面哪里错误了,为什么最后没有输出“CHINA”呢 - ?
钭试奥利: %S 改成 %s,在printf里这个大小写极为敏感,大写的S表示对字符串进行从ANSI到UNICODE的编码转换,这里是不需要任何转换的
昌江黎族自治县15336305093: char a[10],*p;p=a="china"错在哪了??
钭试奥利: p=a是对的!也可以写成p=&a[0] p是指针,指向一个地址,数组名就是它的第一个元素的地址. a="china"把字符串赋值给一个地址,显然是不对的! 可以这样char a[10]="china",或是*p="china"
昌江黎族自治县15336305093: "It's a"是字符串常量吗 - ?
钭试奥利: ","a";CHINA","是 字符串常量是一对双引号括起来的字符序列. 例如下面的是合法的字符串常量: "how do you do."