我们都知道,下面两个函数的参数实际上都是整型指针:
void test1(int * p)
{
}
void test1(int * p)
{
}
void test2(int p[10])
{
{
//下面这句话如果直接看汇编代码的话实际上是直接对num赋值1
int num = sizeof(p)/sizeof(p[0]);
}
int num = sizeof(p)/sizeof(p[0]);
}
编译器并不会把p[10]当做数组来处理,但是如果真的需要以一个数组为参数
该怎么办呢?可用下面的方式:
该怎么办呢?可用下面的方式:
void test3(int (&p)[10])
{
//下面这句话如果直接看汇编代码的话实际上是直接对num赋值10
int num = sizeof(p)/sizeof(p[0]);
}
{
//下面这句话如果直接看汇编代码的话实际上是直接对num赋值10
int num = sizeof(p)/sizeof(p[0]);
}
也就是传数组的引用。
Linux
下怎么显示
unicode
字符?
wchat_t text[5]=L”test”;
调用
wprintf(”%ls”,text);
注意:
1.
这里
wprintf
的格式字符串中要加
l
。
2.
在
linux
中,
wchar_t
是
4
字节,这点和
windows
下不一样,
windows
下是
2
字节。
?
Linux的虚拟地址空间也为0~4G。Linux内核将这4G字节的空间分为两部分。将最高的1G字节(从虚拟地址0xC0000000到
0xFFFFFFFF),供内核使用,称为“内核空间”。而将较低的3G字节(从虚拟地址0x00000000到0xBFFFFFFF),供各个进程使
用,称为“用户空间)。因为每个进程可以通过系统调用进入内核,因此,Linux内核由系统内的所有进程共享。于是,从具体进程的角度来看,每个进程可以
拥有4G字节的虚拟空间