指针,指针数组,数组指针

1. 指针是什么

     是一个能存储地址的数据类型

      定义: 类型 * 指针名

      赋值: 指针变量名= 指针(地址) 注意,指针获取方法( &变量名)

2.特点:

指针本身也是地址,指针定义之后,自身地址不变,但里面的存的地址可以变化.

&p表示指针自身地址,而p表示指针存的地址.*p表示指针所存地址的内存空间.



3. int *p2;  int *p3[3];  这里的*p3[3]是什么意思? 

答: 所表示的是一个由三个指向int型变量的指针变量所组成的数组,数组里面的每一个元素存储的都是指针.

4. int *a[3] 理解思路

    int *a; // 定义了一个指针变量a指向int类型的变量

    int *a[3];   // 定义一个a[3]指向int类型的变量,a[3]是数组,所以里面可以存放3个指针,所以int *a[3]是指针数组


5.指针里存的实际是什么?

答:地址 


6. 指针本身有地址吗?

答: 指针变量也是变量,变量就有地址.


7. 指针占几个字节?

答: 由操作系统决定,如是32位,占字节数为4,64位占8个字节.


8. 如何取指针里的数据?

答: *p


5.一个类型的指针可以存不同类型的地址吗?

答:不可以


  1.  int a=100;
  2.    int *p1=&a;
  3.    int **p2=&p1; //
  4.    
  5.    printf("变量定义如下:\n");
  6.    
  7.    printf("int a=100:\n,int *p1=&a:\n,**p2=&p1:\n\n");
  8.  
  9.    printf("&a=%p\n",&a); // 0x7fff5bd5ac08
  10.    
  11.    printf("&p1=%p,p1=%p\n",&p1,p1); //0x7fff5bd5ac00     ,p1=0x7f5ac08
  12.    printf("&p2=%p,p2=%p\n\n",&p2,p2);//
  13. 0x7ff5bd5abf8,p2=0x7fff5bd5ac00
  14.    
  15.    printf("**p2=%d,*p1=%d\n",**p2,*p1); // 100, 100

1.什么是指针数组?

答: 是一个数组,用来存储指针的数组就叫指针数组,数组里面的元素都是指针

int *p[3] 表示定义了一个可以存三个int指针的数组, 

赋值:int a1=1,a2=2;a3=3; int *p[3]={&a1,&2,&3}; 取值 *p[0]

p[0]=p1; p[1]=p2; p[2]=p3 ;



2.什么是数组指针?

表示一个指针,而这个指针类型是数组

int (*p)[3] 表示这是一个含有三个元素的int数组的指针 

赋值:int arr[3]={1,2,3} ; int (*p)[3]=&arr ;


3.什么是数组元素的指针?

表示一个指针,而这个指针存的是数组一个元素 的地址, int arr[1]={1},i  nt *p =&arr[0];

int arr[3]={1,2,3};

int *p=arr;

int a=*p;   


4.有什么特点: 

1, 数组名表示第一个元素的地址,&数组名表示整个数组的地址,二者值相同,但意义不同

2. 指针可以运算,但仅限于加减运算,运算的实质就是地址运算,即地址的移动.

3.地址(+1)向高位移动,而(-1)向低位移动,不同指针类型移动一位,加1或减1的字节数不同, 指针不受

4. 实际移动的字节数看指针类型,类型占多少个字节,一位就移动多少个字节.

如何看类型,  结合优先级,变量类型 去掉变量名就是int 类型 , 指针类型  去掉星星.





常量区的常量与变量区别?

答; 常量区的常量只有一份,也就是重用的时候,用的都是同一个,地址一样.

1.而变量同一个字符串,不同的变量地址

2.指针定义一个字符串,指针存的实际是在常量区的那个字符串的首字符地址.

3.指针定义的字符串是常量,不能被改变,而字符数组定义的是变量,可以被改变.


8.什么是指针型函数?

答:这个函数的返回值类型是指针

定义:类型*函数名(参数){return 指针类型}


如: int * add(int *a)   {return &a} 

表示定义了一个返回值是int指针类型的add函数.


9. 什么是函数指针?

函数也会在内存开辟一块空间,函数指针即这块空间的地址.


10.有什么特点?

1.函数指针做加减运算可以,没有什么意义.

2.函数指针可以当作参数传递,因为是一个指针类型.

3.不管什么类型的指针,只要是指针,其里面存的就是地址.



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值