不正确的是:A.char a[10]="china"; B.char a[10],*p=a;p="china" ..以及辨析char *a;*a="china";是否等价于char*a="china"

本文详细解析了C语言中常见的字符串操作误区,特别是对字符数组和指针在字符串赋值时的区别进行了深入探讨,帮助读者理解正确的字符串操作方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面说明不正确的是()。

A.char a[10]="china";
B.char a[10],*p=a;p="china"
C.char *a;a="china";
D.char a[10],*p;p=a="china"
解析:因为字符数组a是作为字符串常量存在的,只能在定义时赋值,不能像这样在后面对数组进行赋值操作。
C语言中操作一个字符串常量的方法有:① 把字符串常量存放在一个字符数组中,如A;② 用字符指针指向字符串。
C语言中操作一个字符串常量的方法有:(1)把字符串常量存放在一个字符数组中,如A选项。(2)用字符指针指向字符串
附加:
辨析char *a;*a="china";是否等价于char *a="china";
此处当然是不相等的,
char *a=”china”表示一个char类型指针a
在定义的时候同时赋值,这其实等价于  char *a; a=china;
-----------------------------------------------------
char *a
 //定义一个指针变量a(定义好的指针变量是a,而不是*a)
所以,*a=”china”是不对的
*符号,在定义的语句中,表示声明了一个指针的类型;
*符号,在赋值语句中,表示一个运算,取这个变量的指向内容
设有说明语句:char a[]=”It is mine”;char *p=”It is mine”;则以下正确的叙述是 . A)a+1表示的是字符t的地址 B)p指向另外的字符串时,字符串的长度受限制 C)p变量中存放的地址值可以改变 D)a中只能存放10个字符 设有程序段:char s[10]=china”; char *p ; p=s ;则下面叙述正确的是 。 A)s和p完全相同 B)数组s中的内容和指针变量p中的内容相等 C)s数组长度和p所指向的字符串长度相等 D)*p与s[0]相等 下面判断正确的是 。 A)char *a=china”; 等价char *a; *a=china” ; B)char str[10]={“china”}; 等价char str[10]; str[ ]={“china”} ; C)char *s=china”; 等价char *s; s=china” ; D)char c[4]=”abc”,d[4]=”abc”; 等价char c[4]=d[4]=”abc” ; 若已定义char s[10];则在下面表达式中表示s[1]的地址是 。 A)s+1 B)s++ C)&s[0]+1 D)&s[1] 若有定义:int a[5],*p=a;则对a数组元素的正确引用是 。 A)*&a[5] B)a+2 C)*(p+5) D)*(a+2) 若有定义:int a[5];则a数组中首元素的地址可以表示为 。 A)&a B)a+1 C)a D)&a[1] 以下正确说明语句是 。 A)int *b[]={1,3,5,7,9} ; B)int a[5],*num[5]={&a[0],&a[1],&a[2],&a[3],&a[4]}; C)int a[]={1,3,5,7,9}; int *num[5]={a[0],a[1],a[2],a[3],a[4]}; D)int a[3][4],(*num)[4] ; num[1]=&a[1][3]; 若有定义:int x[10]={0,1,2,3,4,5,6,7,8,9},*p1;则数值为3的表达式是 。 A)x[3] B)p1=x+3,*p1++ C)p1=x+2,*(p1++) D)p1=x+2,*++p1 若有定义int a[4][6];则能正确表示a数组中任一元素a[i][j](i,j均在有效范围内)地址的表达式 。 A)&a[0][0]+6*i+j B)&a[0][0]+4*j+i C)&a[0][0]+4*i+j D)&a[0][0]+6*j+i 下面程序的运行结果是 。 main ( ) { int x[5]={2,4,6,8,10}, *p, **pp ; p=x , pp = &p ; printf(“%d”,*(p++)); printf(“%3d”,**pp); } A)4 4 B)2 4 C)2 2 D)4 6 const char *p、char const *p、char *const p 有什么区别?(北京信果科技) 以下为linux下的32位C程序 (飞音时代)   char str[] = "Hello"; char *p = str; int n = 10; 请计算: (1) sizeof(str) = ________ (2) sizeof(p) = ________ (3) sizeof(n) = ________
04-01
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值