C++语法拾遗
2026/2/22大约 1 分钟
C++ 语法拾遗
记录 C++ 的遗忘或者比较难记的语法。
1. 字符串赋值给字符指针
看下面这个程序:
"/bin/ls" 这种双引号括起来的东西叫做字符串字面量。本质是字符数组,类型是 const char[] 。
args[0] = "/bin/ls" ,把字符串复制给字符指针是可以的,这时候字符串会退化为指向字符数组第一个元素的地址。(把数组当作参数传递给函数,也会退化成指针)

args[0] = (char *)"/bin/ls"; :之所以要强制类型转换,是因为 C++ 中 "/bin/ls" 是只读类型的,而指针没有限制只读,因此编译器会报警告。
2. 数组和指针
在 C 语言中,当你把一个数组作为参数定义在函数里时,编译器会自动把它退化为一个指向该数组第一个元素的指针。
数组指针:是一个指针,这个指针指向一个数组。 int (*p)[3] 
指针数组:是一个数组;数组里面存放的元素是指针。 int *p[3] 
64 位系统内存地址大小是 64 位,需要 8 个字节,这意味着 64 位系统中指针的大小就是 8 字节。