在以下规则中,当数组衰减到指针时:
左值[见2.5问题]型阵列的-T出现在表达衰变(有三个例外)转换成一个指向它的第一个元素的; 结果指针的类型是指向T的指针.
(例外情况是,当阵列是的sizeof或&运算符的操作数,或为字符数组一个文本字符串初始化.)
如何理解数组是"字符数组的文字字符串初始值设定项"的情况?请举个例子.
谢谢!
当我需要将一个数组传递给一个函数时,似乎所有以下函数声明都可以工作
void f(int arr[])
void f(int arr[4]) // is this one correct?
Run Code Online (Sandbox Code Playgroud)
为了这:
int a[]={1,2,3,4};
f(a);
Run Code Online (Sandbox Code Playgroud)
但是当我将一个数组分配给另一个数组时,它就失败了
int a[]={1,2,3,4};
int b[4] = a; // error: array must be initialized with a brace-enclosed initializer
Run Code Online (Sandbox Code Playgroud)
那么为什么作为函数的参数传递的数组是可以的,但是在简单赋值的rhs上使用是错误的?
每次我看一个C函数指针,我的眼睛都会茫然.我看不懂.
从这里,这里有两个函数指针TYPEDEFS的例子:
typedef int (*AddFunc)(int,int);
typedef void (*FunctionFunc)();
Run Code Online (Sandbox Code Playgroud)
现在我习惯了这样的事情:
typedef vector<int> VectorOfInts ;
Run Code Online (Sandbox Code Playgroud)
我读到的是
typedef vector<int> /* as */ VectorOfInts ;
Run Code Online (Sandbox Code Playgroud)
但我无法阅读上面的2个typedef.包围和星号放置,这是不合逻辑的.
为什么*旁边的单词AddFunc ..?