c语言数组给指针赋值的特殊性

数组给指针赋值的特殊性

  • 变量名的地址赋值给指针时,必须加取地址符&

    int*p;
    int a=1;
    p=&a;//正确
    p=a;//错误
    
  • 数组名的地址赋值给指针时,给的是首元素地址,和传递参数是一样

    int arr[10];
    int *p;
    p=&arr;
    p=arr;
    p=&arr[0];//以上三行效果相同,p中保存的都是首元素地址
    
  • 数组名的地址赋值给指针时,加&和不加,在某些时候意义相同,有些时候意义不同

    #include<iostream>
    using namespace std;
    int main()
    { 
    	int arr[10];
    	cout<<(void*)(arr)<<endl;
    	cout<<(void*)(arr+1)<<endl;//首元素地址加一,地址值加4
    	cout<<(void*)(&arr)<<endl;
    	cout<<(void*)(&arr+1)<<endl;//数组整体的地址往后边移一位,地址值加40
    
    }
    

《c语言数组给指针赋值的特殊性》

    原文作者:JQ-FU
    原文地址: https://blog.csdn.net/weixin_50825607/article/details/116640465
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞