//1.
unsigned int a=1;
int b=-1;//int b——>unsigned int b=一个很大的数
char c=a>b?'a':'b';
printf("%c\n",c);//打印出'b'
//2.
unsigned short a=1;//——>int a=1;
int b=-1;
char c=a>b?'a':'b';
printf("%c\n",c);//打印出'a'
const int a=10;
const int a;
//以上两种编译皆可以通过
const int a=10;
int array[a]={0};//编译不通过
4)常变量的编译方式和普通变量没有区别。const int a=10;
int *p=(int *)&a;//*p访问a的值
*p=20;
printf("%d%d\n",a,*p);//20,20
//a和*p的值都是从内存里面取的
const int a=10;
int *p=(int *)&a;
*p=20;
printf("%d%d\n",a,*p);//10,20
int b=10;
const int a=b;//此时相当于C中的const
const int a=10;
a=20;//错误,因为常量作为左值
const int a=10; const int a=10; int *p=&a;//左:int * 右:const int *//false int *const p=&a;//错误,左边是int *,右边是const int *,即泄露给一个普通的指针 const int *p=&a;//正确,左边是const int *,右边是const int *,即泄露给一个const的指针
const int a=10;
int *p=&a;//左:int * 右:const int *//false
int a=10;//左:int 右:int
const int *p=&a;//左:const int * 右:int *//true
int a=10;//int int
const int *p=&a;//const int * int *
int **q=&p;//int ** const int **//false
// == int *-->const int *&
int a=10;//int int
int *p=&a;//int * int *
const int **q=&p;//const int ** int **//false//因为p是变量地址,不可以直接赋值
// == const int *-->int *&
int a=10;
int *const p=&a;//int * int *
int **q=&p;//int ** int *const *p-->* const *//false
int a=10;
int *p=&a;//int * int *
int *const *p=&p;//int *const * int **-->const * *//true
#include <iostream>
#include <typeinfo>
using namespace std;
int main()
{
int a = 10;
const int b = 10;
cout << typeid(a).name() << endl;
cout << typeid(b).name() << endl;
return 0;
}
void func(int *a){}
void func(const int *a){}
//两者类型不同可以重载
void func(int *a){}
void func(int *const a){}
//两者类型相同不能重载
void func(int *a){}
void func(volatile int *a){}
//两者类型不同可以重载
void func(int *a){}
void func(int *valatile a){}
//两者类型相同不能重载
bool isThreadRunning=false;
void *threadProc(void *args)
{
while(!isThreadRunnning){}
}
void main()
{
pthread_create(&tid,NULL,threadProc,(void *)args);
isThreadRunning=true;
}
volatile bool isConfigOver=false;
//main thread
loadConfig();//加载配置
isConfigOver=true;
if(isConfigOver)
{
}
//child thread
while(!isConfigOver);//检查系统配置已经加载完成,开始做事情
int a=10;
int &b=a;//引用
&b=a;//取地址
//左边有类型叫引用,没类型,就叫取地址
int a=10;
int &b=a;//引用
int *p=&a;//指针
//a,b,*p表示同一块内存。
- 变量定义时,名字左边有&,就是定义了一个引用变量;
- 引用必须初始化;
- 引用定义时,引用了哪块内存,就永不再变,就不能再引用其他内存了;
- 引用只能定义一级引用,不能出现二级引用,指针可以多级指针;
- 使用引用变量,永远访问的是它所引用的内存(不能访问4字节的指针内存)。
8.指针数组,数组指针和函数指针: