char *a = "123";这行代码在c++为什么是非法的,在c语言是合法的
时间: 2023-05-26 22:04:51 浏览: 60
在C语言中,声明指针的时候需要指定它所指向的数据类型,例如char *a表示a是一个指向字符型数据的指针。但是,初始化指针的时候可以省略数据类型的声明,例如 char *a = "123"就是一个合法的语句。这种语法被称为字符串常量初始化,它等价于使用静态存储区分配一个字符串常量,并将它的地址赋值给指针a。因此,在C语言中,这是一个合法的语句。
相关问题
char *a=”china”; 等价于 char *a; *a=”china”
对不起,我之前给出的回答是错误的,非常抱歉。
在C语言中,选项 A)`char *a="china";` 是将字符串常量 "china" 的地址赋值给指针变量 a。这是一种常见的字符串赋值方式。
选项 B)`char *a; *a="china";` 是错误的。这段代码会导致指针 a 指向的内存未初始化,而后面的 *a 的操作会导致未定义的行为。
正确的方式应该是选项 A)`char *a="china";`,它将字符串常量 "china" 的地址赋值给指针变量 a。这样,指针变量 a 就指向了字符串常量 "china" 的首字符。
再次对之前的错误答案表示歉意,并感谢您的指正。
char c = 'A';char *p1 =&c; char**p =p1; 请问 char **p =p1 还是 char **p =&p1 时候 **p1 数值等于c的数值
在C语言中,char c = 'A';char *p1 =&c; char**p =p1;这段代码中,指针p1指向字符变量c的地址,指针p指向指针变量p1的地址。因此,char **p = p1 是将指向字符变量c的指针p1赋值给指向指针变量p的指针。此时**p的数值等于c的数值。
而 char **p =&p1 则是将指向指针变量p1的指针赋值给指向指针变量p的指针,此时**p的数值与c无关。