设已定义char a[10]; char *p=a;下面的赋值语句中,正确的是 。A.a[10]="Hello!"; B.a="Hello!"; C.*p="Hello!"; D.p="Hello!";
时间: 2024-05-20 13:11:44 浏览: 103
正确的赋值语句是 C.`*p="Hello!";`。因为 `p` 是指向 `a` 的指针,所以 `*p` 等价于 `a`,可以通过 `*p` 来修改 `a` 中的值。而选项 A 中的 `a[10]` 越界访问了数组 `a`,选项 B 中的 `a` 是数组名,不能被赋值,选项 D 中的 `p` 是指针变量,不能被直接赋值为字符串常量。
相关问题
假设定义char a[10] 和char *p=a 那么赋值语句正确的是a[10]="Tur C"
那么,赋值语句正确的是:
char a[10] = "Tur C";
或者是:
char *p = "Tur C";
但是不能这样写:
a[10] = "Tur C";
因为数组下标从0开始,a[10]实际上是数组a的第11个元素,而数组a只有10个元素,所以访问超出了数组的范围。
另外,如果你想用指针p来赋值,你需要把它指向一个合法的内存地址,例如:
char *p = a;
这样就可以使用p来访问数组a的元素了。
已有定义char k=2; char *ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是( )。 A. *ptr1=*ptr2 B. *k=*ptr1*(*ptr2) C. *ptr2=k+2 D. k=*ptr1+*ptr2
A. *ptr1=*ptr2
B. *k=*ptr1*(*ptr2)
D. k=*ptr1 *ptr2
这三个赋值语句都不能正确执行。
A. 因为k是一个char类型的变量,ptr1和ptr2都是指向k的指针,而*ptr1和*ptr2都表示指针所指向的内存中的值。所以*ptr1=*ptr2是将两个指针所指向的值赋值给了彼此,这是不合法的。
B. 在C语言中,k是一个char类型的变量,不能对它进行解引用操作。所以*k=*ptr1*(*ptr2)是不合法的。
D. k=*ptr1 *ptr2这个赋值语句中,*ptr1 *ptr2的值会先被计算,然后再赋值给k。但是*ptr1 *ptr2这个表达式中,*ptr1和ptr2之间没有运算符,所以会产生语法错误。
阅读全文