//--程序#1指针的使用
#include <iostream>
using namespace std;
int main()
{
int balance;
int *balptr;
int value;
balance=3200;
balptr=&balance;
cout<<balptr<<endl;
value=*balptr++;//注意这样的使用,此处是对地址加1后,在取值,注意优先级
//value=(*balptr)++;
cout<<"balance is: "<<value<<'/n'<<balptr<<' '<<*balptr<<' '<<balance<<endl;
return 0;
}
结果:Ox22ff74 //balance的地址值
Balance is: 3200 //把balptr指针所指值传给value
Ox22ff78 2293680 3200 //balptr增加1,即增加一个int,4字节
#include <iostream>
using namespace std;
int main()
{
double x,y;
int *p;
x=123.23;
p=(int *)&x;//将double类型的指针转换为 int类型
y=*p;
cout<<y<<' '<<*p<<endl;
return 0;
}
结果:1.37439e+009 1374389535
强制转化时有可能会出问题,为什么呢?
int x,*p;
x=10;
*p=x;//p未初始化,error; right: p=&x;初始化
char str[80];
cin>>str
//只能接受字符,不包括空格
命令行参数
int main(int argc, char *argv[])
main函数中出现的变量需要定义,就算是全局变量也需要//为错误说法,只不过出现在count这个自变量中,大概count作为变量有问题。
#include <iostream>
#include <conio.h>
using namespace std;
void reverse(char *s);
int count1;
int main()
{
char str[]="this";
reverse(str);
cout<<endl<<"======================="<<endl;
getchar();
return 0;
}
void reverse(char *s)
{
count1++;
cout<<"count: "<<count1<<endl;
if(*s)
reverse(s+1);
else
return;
cout<<*s<<"==";
}
结果: ,对于为什么后面还能输出感到奇怪,需要画一张自调用图。
//--程序#3 引用参数
#include <iostream>
using namespace std;
void f(int &i);
int main()
{
int val=1;
cout<<"Old value for val: "<<val<<endl;
f(val);
cout<<"New value for val: "<<val<<endl;
cout<<endl<<"======================="<<endl;
//getchar();
return 0;
}
void f(int &i)
{
i=100;
}
//引用参数传递值,此时val变为100。引用方法void f(int &i);f(val)
// 使用引用变量的限制:
// .不能引用一个引用变量
// .不能创建引用数组
// .不能创建指向引用的指针
// .在位域中不使用引用
//函数重载的歧异性。若是一个浮点型常数,通常会默认为double型。
void code(const char *str)//所指变量不能变,但地址可以变。
void code1(char *const str)// 所指地址不能变,但所指变量可以变。
//--程序#1 const的使用
#include <iostream>
using namespace std;
void code(const char *str);
void code1(char *const str);
int main()
{
code("this is a test");
cout<<endl;
code1("dddddddddddddddd");
cout<<endl<<"======================="<<endl;
//getchar();
return 0;
}
void code(const char *str)//所指变量不能变,但地址可以变。
{
while(*str){
//str="lixiongwei!";
//cout<<str;
*str=*str+1;//error,对所指变量赋值
cout<<(char)*str;//ok
cout<<(char)(*str+1);//内存问题
str++;
}
}
void code1(char *const str)
{
*(str+2)='A';
}
//对于这段程序还是存在很多的疑问,
static int sum=0,count=0;//只执行一次初始化
int signed_pwr(register int m, register int e);//register的使用
//计算所花时间
#include <ctime>
long start,end;
start=clock();
for(delay=0; delay<50; delay++)
for(i=0; i<64000000; i++);
end=clock();
cout<<"non-register: "<<end-start<<endl;
char *name[]//等价于char name[][20];
char ch;
ch&=223; //223=1101 1111;把ch转换为大写字母
ch|=32; //223=1101 1111;把ch转换为小写字母
void disp_binary(unsigned u)
{
register int t;
for(t=128; t>0; t/=2) //二进制求法
{
cout<<endl<<"t= "<<t<<"===";
if(u & t)
cout<<"1 ";
else
cout<<"0 ";
}
cout<<endl;
}
i=(j++, j+100, 999+j);//等价于i=(j+1)+999,即最后一个运算。逗号运算符
char ch;
int i,nums[4];
cout<<sizeof ch<<' ';//1
cout<<sizeof i<<' ';//4
cout<<sizeof(float)<<' //4';
cout<<sizeof(double)<<' ';//8
cout<<sizeof nums;//4X4=16
double *p;
p=new double[10];//赋予P一个具有10个字符的数组的空间。
delete []p; //删除
double *j;
j=(double *)malloc(sizeof(double));//赋予一个double的空间
if(!j){
cout<<"Allocation failure./n";
return 1;
}//判断很重要
free(j);//释放