首页 > 代码库 > 黑马程序员-关于C语言的指针一些小知识点
黑马程序员-关于C语言的指针一些小知识点
------- IOS培训、android培训、java培训、期待与您交流! ----------
c语言的难点和精华部分就是指针,能够将指针完全理解并且将其运用熟练不是一件容易的事情,其中有几个知识点比较绕一些。
1.数组指针与指针数组的区别。
数组指针是一个指针,是指向数组的指针,就如同int*,char*型指针,只不过它是指向数组的(首元素),大小为4(32位平台下),通过它就可以做找到整个数组。
1 #include <stdio.h> 2 int main(int argc, char *argv[]) 3 { 4 int a[3][4] = {{0,1,2,4}, 5 {5,6,7,8}, 6 {9,10,11,12}}; 7 int (*p)[4]; 8 p = a; 9 printf("%d",**(p +1)) ;10 return 0;11 }
其中 int (*p)[4] 是一个二维的数组指针。
而指针数组是一个数组,数组的元素都是指针而已,看下面代码
1 #include <stdio.h> 2 int main(int argc, char *argv[]) 3 { 4 int a[3][4] = {{0,1,2,4}, 5 {5,6,7,8}, 6 {9,10,11,12}}; 7 int *p[3]; 8 for(int i=0;i<3;i++){ 9 p[i] = a[i];10 }11 printf("%d",*p[1]) ;12 return 0;13 }
int *p[3]里面存的都是指针
2.指针函数和函数指针的区别
指针函数是一个函数,它的返回值是一个指针而已。其实准确来说没有指针函数这么一说,只有返回值为指针的函数或者参数为指针的函数。
函数指针是一个指针,这个指针指向具体的一个函数。它在程序设计中是非常有用的,可以显著的减少代码量和优化代码结构,下面是一个简单的用法示例。
1 #include "stdio.h" 2 3 #define OK 1 4 5 int Fun1(int num) 6 { 7 printf("The Fun1 value is %d\n",num); 8 return OK; 9 } 10 11 int Fun2(int num)12 {13 printf("The Fun2 value is %d\n",num);14 return OK;15 } 16 17 int Fun3(int num)18 {19 printf("The Fun3 value is %d\n",num);20 return OK;21 } 22 23 24 int main()25 { 26 int i,state;27 //定义函数指针 28 int (*Fun_p[3])(int num); 29 //初始化函数指针 30 Fun_p[0] = Fun1; 31 Fun_p[1] = Fun2;32 Fun_p[2] = Fun3;33 34 for(i=0;i<3;i++)35 state = Fun_p[i](i);36 getchar();37 return ;38 }
黑马程序员-关于C语言的指针一些小知识点
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。