前言 指针和数组存在着一些本质的区别。当然,在某种情况下,比如数组作为函数的参数进行传递时,由于该数组自动退化为同类型的指针,所以在函数内部,作 为函数参数传递进来的指针与数组确实具有一定的一致性,但这只是一种比较特殊的情况而已,在本质上,两者是有区别的。
char* 是一个指针,指向一个字符数组的首地址,可以动态分配内存来存储字符数组,也可以指向已存在的字符数组,可以根据需要改变指向的位置。 而char数组是一个固定长度的字符数组,大小在定义时就已经确定,不能改变大小,也不能直接赋值给另一个数组,需要通过循环逐个复制字符来实现。 因此,char* 更加灵活,可以动态分配内...
{char*a="Hello";//a在栈上,"Hello"在常数区上//a[2]='a';//系统错误:不可以修改常数区数据,只能读取charb[]="Hello";//b在栈上,且为字符串"Hello"的首地址b[2]='a';//可以这样做,可以修改char*s1=(char*)malloc(64);//在栈上开辟一个区域放s1,在堆上开辟一个区域,再让s1指向他chars2[...
1. 数据类型:char数组是一种数据类型,它包含一组char类型的值。而 char*是一个指向字符(char)类型的指针。2. 内存分配:对于char数组,我们在定义数组时就已经将内存空间分配给它,而且一旦定义了数组大小,就不能更改数组的大小。而 char* 只是一个指针,它需要在运行时动态地分配内存,以便能够...
char *和char数组都可以用来表示一段包含多个字符的数据,但它们有以下几点不同:内存分配方式:char数组在定义时需要指定其长度,并且会在栈上分配一块连续的内存空间来存储数据;而char *是一个指针,它通常是通过动态内存分配函数(如malloc)来分配一块内存空间,这个空间可能不是连续的。可变性:char...
其中a是一个指向char变量的指针,b则是一个char数组(字符数组), 2. 其次 ,很多时候二者可以混用,像函数传参数的时候,实参可以是char*,形参可以是char[],比如: voidfun1(charb[]){printf("%s",b);}intmain(){char*a="HellowWorld";fun1(a);} ...
3. 表示意义:`char` 类型用于表示单个字符,如 'A'、'1' 等。而 `char *` 类型用于表示一个字符串,它可以看作是一个字符数组,如 `"hello"`,其中每个字符都以字符指针的形式存在。4. 运算规则:`char` 类型的运算通常涉及字符的 ASCII 码值,例如将一个字符...
char*是指针,保存了连续的char类型数据的地址。这个地址可能是静态区的固定字符串,也可能是其他地方创建的一个数组的指针。关于数据转换,char*指向的位置就是一个char数组。如果想显式的保存到另一个数组中,可以使用字符串拷贝函数,或者内存拷贝函数。例如:// 创建一个字符串数组char arr[10] = ...
char指针与char数组的区别(非常详细!) 首先看指针 : char *p = “helloworld”; p是一个变量,其类型为指针类型,并且指向一个字符串,字符串内容为”helloworld”,如果要访问p[2]的话,就需要先从p中取出地址,该地址为”helloworld”的首地址,然后再加上偏移量2,就得到了’l’这个字符,所以其访问的方式为先从...
数组不是指针,指针也不是数组,这是两个不同的东西,只是在某些场合下,可以进行相似的操作。char a[...