//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.指針數組,數組指針和函數指針: