C语言字符指针和字符数组的区别

2024-11-09 06:21:28
推荐回答(3个)
回答1:

字符串指针变量的定义说明与指向字符变量的指针变量说明是相同的。只能按对指针变量的赋值不同来区别。
对指向字符变量的指针变量应赋予该字符变量的地址。如: char c,*p=&c;表示p是一个指向字符变量c的指针变量。而: char *s="C Language";则表示s是一个指向字符串的指针变量。把字符串的首地址赋予s。

回答2:

两个用法差不多,唯一的区别在于字符数组的值在程序运行过程中是可以修改的,但是字符指针的值在运行过程中是不能修改的。

#include

using namespace std;

int main()
{
char *a = "abcd";
char b[10] = "abcd";
//a[2] = 't';   //运行会报错
b[2] = 't';   //正常
//cout << b << endl;
return 0;
}

回答3:

推荐回答里面是有问题的,对于指向字符的指针来讲,其指向内容是否可变,要看他指向的内容,指向字符的指针可以指向两种字符串:1.字符串常量,如char *q="abcd",这里q指向的内容是不可变的,即q[1]='a'是不合法的;2.字符串变量,如char p[10],然后给p赋值,然后char *q=p,这里的q指向的内容是可以变的
需要注意的是,这里是q指向的内容是否可变,而不是q指向的内存是否可变也就是说1中的q可以有q=p(p也是一个字符指针)这样的操作