A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© gd32376300 中级黑马   /  2015-12-9 18:08  /  798 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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.一个类型的指针可以存不同类型的地址吗?
答:不可以



int
a=100;

   int
*p1=&a;

   int
**p2=&p1;
//

   

   printf("变量定义如下:\n");

   

   printf("int
a=100:\n,int *p1=&a:\n,**p2=&p1:\n\n");



   printf("&a=%p\n",&a);
// 0x7fff5bd5ac08

   

   printf("&p1=%p,p1=%p\n",&p1,p1);
//0x7fff5bd5ac00     ,p1=0x7f5ac08

   printf("&p2=%p,p2=%p\n\n",&p2,p2);//

0x7ff5bd5abf8,p2=0x7fff5bd5ac00

   

   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.不管什么类型的指针,只要是指针,其里面存的就是地址.

2 个回复

倒序浏览
不错 学习到了
回复 使用道具 举报
总结的很好,学习了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马