我最近开始学习C,并且我在理解指针语法方面遇到了问题,例如当我写下以下行时:
int ** arr = NULL;
Run Code Online (Sandbox Code Playgroud)
我怎么知道:
arr是指向整数指针的指针
arr是指向整数指针数组的指针
arr是指向整数数组指针数组的指针
是不是都一样int **?
如果我有一个char ** s作为参数接收的函数,我想将它称为一个pointer字符串数组,这意味着指向一个指向数组的指针数组的指针chars,但它是否也指向指向char?的指针?
我试图测试的差异sizeof和strlen,但我发现了一些奇怪的今天.代码如下.
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
char a[]={"I am a boy"};
char b[]={'I',' ','a','m',' ','a',' ','b','o','y'};
cout << "sizeof(a) = " << sizeof(a) << endl << "sizeof(b) = " << sizeof(b) <<endl;
cout << "strlen(a) = "<< strlen(a) << endl << "strlen(b) = " << strlen(b) << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
结果如下:
sizeof(a) = 11
sizeof(b) = 10
strlen(a) = 10
strlen(b) = 11
Run Code Online (Sandbox Code Playgroud)
我知道结果的前三行,但我不明白为什么strlen(b)是11.有人可以帮我吗?