CHAR[]与CHAR*
时间:2010-03-27 来源:qytan36
int main(int argc, char *argv[])
{
char *s1 = "hello"; //s1是指针,指向一个字符串常量,字符串常量没有在堆栈中分配空间,相当于编译时候已经固化的指令了,所以不能对其进行任何修改。
char s2[] = "world"; //s2是一个字符数组,s2为数组地址
printf("%d\n", sizeof(s1)); //output: 4. sizeof(char*)
printf("%d\n", sizeof(s2)); //output: 6. The length of "world\0".
s1[0] = 'a'; //Error, "hello"是字符串常量,不能修改
s2[0] = 'a'; //OK, s2是一个字符数组
s1 = s2; //OK
s2 = s1; //Error,s2是数组名称,也是数组的首地址,不能修改其值
return 0;
}
//在作为函数行参时候,二者没有区别,都是同样的数据类型char*
void f(char *s)
void f(char s[])
{
...
}
{
char *s1 = "hello"; //s1是指针,指向一个字符串常量,字符串常量没有在堆栈中分配空间,相当于编译时候已经固化的指令了,所以不能对其进行任何修改。
char s2[] = "world"; //s2是一个字符数组,s2为数组地址
printf("%d\n", sizeof(s1)); //output: 4. sizeof(char*)
printf("%d\n", sizeof(s2)); //output: 6. The length of "world\0".
s1[0] = 'a'; //Error, "hello"是字符串常量,不能修改
s2[0] = 'a'; //OK, s2是一个字符数组
s1 = s2; //OK
s2 = s1; //Error,s2是数组名称,也是数组的首地址,不能修改其值
return 0;
}
//在作为函数行参时候,二者没有区别,都是同样的数据类型char*
void f(char *s)
void f(char s[])
{
...
}
相关阅读 更多 +
- 系统休眠文件删除后果 如何删除计算机的休眠文件 2025-04-22
- 站群服务器是什么意思 站群服务器的作用 站群服务器和普通服务器的区别 2025-04-22
- jQuery插件有何作用 jQuery插件的使用方法 2025-04-22
- jQuery插件有哪些种类 简单的jQuery插件实例 2025-04-22
-