```c++
int main() {
int a = 10;
int *p;
p = &a;
printf("%d\n", p);
printf("%d\n", *p);
printf("%d\n", &a);
int b = 20;
*p = b; // 此处p仍然指向a,所以修改a的值变成b了
}
intmain(){inta=1025;int*p;p=&a;char*p0;p0=(char*)p;// 类型转换printf("Address of p0 = %d\n",p0);printf("Address of p = %d\n",p);printf("Value of p = %d\n",*p);printf("Value of p0 = %d\n",*p0);}/*Address of p0 = 1210055916Address of p = 1210055916Value of p = 1025Value of p0 = 1 1025 存为四个字节 最后一个字节是1 取完地址 由于char类型大小1byte 只取最后一个字节的值 即1*/
// 错误做法voidincrement(inta){// 形参:被调用函数中的变量a+=1;cout<<"Address of a is"<<&a<<endl;}intmain(){inta=10;increment(a);// 实参:调用函数中的变量cout<<"Address of a is"<<&a;}
intSumOfELem(inta[],intsize){intsum=0;for(inti=0;i<size;i++){sum+=a[i];}returnsum;}intmain(){inta[]={1,2,3,4,5,6,7,8,9};intsize=sizeof(a)/sizeof(a[0]);inttotal=SumOfELem(a,size);printf("The sum of the elements is : %d",total);}
intSumOfELem(inta[]){// 等价于int* aintsum=0;intsize=sizeof(a)/sizeof(a[0]);for(inti=0;i<size;i++){sum+=a[i];}returnsum;}intmain(){inta[]={1,2,3,4,5,6,7,8,9};inttotal=SumOfELem(a);printf("The sum of the elements is : %d",total);}
intmain(){intn;cin>>n;int*A=(int*)malloc(n*sizeof(int));// c++: int *arr = new int[n];for(inti=0;i<n;i++){*(A+i)=i+1;}for(inti=0;i<n;i++){cout<<*(A+i)<<" ";}}
intadd(inta,intb){cout<<"Address of a in add="<<&a<<endl;returna+b;}intmain(){intx=2;inty=3;cout<<"Address of x in main="<<&x<<endl;cout<<add(x,y);// 此处x,y在主函数中的值被传递给了add函数}
intadd(int*a,int*b){cout<<"Address of a in add="<<&a<<endl;return*a+*b;}intmain(){intx=2;inty=3;cout<<"Address of x in main="<<&x<<endl;cout<<add(&x,&y);}