黑马程序员-关于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 }
时间: 2024-12-20 08:04:27

黑马程序员-关于C语言的指针一些小知识点的相关文章

黑马程序员-OC self super isa指针

self指针: self是oc面向对象设计中的一个特殊指针,相当于java中的this,但是比this强大,this只能访问实例对象的相关方法和成员变量,或者说this只代表实例对象: self不仅可以代表实例对象,还可以代表类对象:谁调用当前方法,self就代表谁:如果self用在了以"-"号的方法中,也就是对象方法中,那么就代表实例对象,若果在"+"号开头的方法中,self就代表类对象,因为只有类对象才能调用以"+"号开头的方法: self调

黑马程序员---ios开发之,property指针在ios5中的一些说明

在iOS开发过程中,属性的定义往往与retain, assign, copy有关,我想大家都很熟悉了,在此我也不介绍,网上有很多相关文章. 现在我们看看iOS5中新的关键字strong, weak, unsafe_unretained. 可以与以前的关键字对应学习strong与retain类似,weak与unsafe_unretained功能差不多(有点区别,等下会介绍,这两个新 关键字与assign类似).在iOS5中用这些新的关键字,就可以不用手动管理内存了,从java等其它语言转过来的程序

黑马程序员_ C语言基础之指针(三)

概览 指针是C语言的精髓,但是很多初学者往往对于指针的概念并不深刻,以至于学完之后随着时间的推移越来越模糊,感觉指针难以掌握,本文通过简单的例子试图将指针解释清楚,今天的重点有几个方面: 1.什么是指针 2.数组和指针 3.函数指针 什么是指针 存放变量地址的变量我们称之为“指针变量”,简单的说变量p中存储的是变量a的地址,那么p就可以称为是指针变量,或者说p指向a.当我们访问a变量的时候其实是程序先根据a取得a对应的地址,再到这个地址对应的存储空间中拿到a的值,这种方式我们称之为“直接引用”:

黑马程序员——经典C语言程序设计100例

1.数字排列 2.奖金分配问题 3.已知条件求解整数 4.输入日期判断第几天 5.输入整数进行排序 6.用*号显示字母C的图案 7.显示特殊图案 8.打印九九口诀 9.输出国际象棋棋盘 10.打印楼梯并按条件打印笑脸 11.经典兔子问题 12.判断素数 13.水仙花数问题 14.正整数分解质因数 15.学习成绩划分 16.正整数求其最大公约数和最小公倍数 17.统计英文字母/空格/数字个数 18.求s=a+aa+aaa+aa...a的值 19.求解"完数" 20.球体自由落下物理问题

黑马程序员——从C语言到OC

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- ios开发(包括iphone和ipad上的应用)使用的是objective-c这种语言,OC语言诞生于1986年,也是一门较为古老的语言.OC是完全兼容C语言的,也就意味着C语言中所有的语法特性在OC中都是可以使用的,所以很多用C语言开发的库和函数,是可以在OC语言中直接使用的(这也是OC语言中大部分关键字使用@开头的原因,主要是为了在同一文件中区分C和OC代码).但是OC的基本语法职工又有不

黑马程序员_ C语言基础(一)

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------ 开发过程: 编写->编译(只编译源文件,编译成*.o  只会检测语法是否合理,不会检测函数是否存在)->链接(将所有相关的.o文件和C函数库整合成可执行文件  会检测函数是否定义)->运行 第一部分: 1.预处理指令:在编译之前执行的指令(eg:include <stdio.h>). 注:系统自带文件用< >,自己写的用"".( eg:incl

黑马程序员-----------复习C语言《基本运算》

基本运算 一.算术运算 C语言一共有34种运算符,包括了常见的加减乘除运算 1.加法运算+ ?除开能做加法运算,还能表示正号:+5.+90 2.减法运算- ?除开能做减法运算,还能表示符号:-10.-29 3.乘法运算* 注意符号,不是x,而是* 4.除法运算/ ?注意符号,不是÷,也不是\,而是/ ?整数除于整数,还是整数.1/2的值是0,这个并不是二分之一 5.取余运算% ?什么是取余:两个整数相除之后的余数 ?%两侧只能是整数 ?正负性取决于%左侧的数值 6.注意点 1>自动类型转换 in

《黑马程序员》C语言中流程控制(C语言)

一.流程控制 C语言中程序运行中共分为3中结构: 顺序结构:默认的流程结构.按照书写顺序执行每一条语句. 选择结构:对给定的条件进行判断,再根据判断结果来决定执行哪一段代码. 循环结构:在给定条件成立的情况下,反复执行某一段代码. 二.选择结构 if语句结构如下所示,if运行条件只有两个0或1 if(语句一) { printf("博客"); } else if { printf("博客1"); } else if { printf("博客2");

黑马程序员_ C语言基础(二)

概览 今天基础知识分为以下几点内容(注意:循环.条件语句在此不再赘述): 1.Hello World 2.运行过程 3.数据类型 4.运算符 5.常用函数 Hello World 既然是IOS开发系列首先看一下在Mac OS X中的C的运行 打开Xcode 选择命令行程序 填写项目名称并选择使用C语言 选择保存目录 自动生成如下代码 OK,在Xcode上我们编写自己的程序如下 // // main.c // C语言基础 // // Created by Kenshin Cui on 14-7-1