Linux C 程序(TEN)

指针数组和二级指针

 1 #include<stdio.h>
 2
 3 int main(){
 4         int a[5] = {1,3,5,7,9};
 5         int *p[5], i;
 6         int **pp = p;
 7     //使p指针数组指向每一个a
 8         for(i = 0 ; i < 5 ; i++){
 9                 p[i] =&a[i];
10         }
11     //【】优先级高于* ,*(p[i]) p[i] = &a[i],so==> *p[i] = *&a[i] = a[i]
12         for(i = 0 ; i < 5 ; i++){
13                 printf("%d ",*p[i]);
14         }
15         printf("\n");
16     //p 和 pp都是二级指针,i=0时,*pp=p[0] ,p[0]=&a[i],*pp=a[0].
17     //执行pp++之后,pp指向p[1],*pp=p[1],p[1]=&a[1].
18         for(i = 0 ; i < 5 ; i++,pp++){
19                 printf("%d ",**pp);
20         }
21
22         return 0 ;
23 }
24 output:
25 1 3 5 7 9
26 1 3 5 7 9

指针与数组的 关系

 1 nclude<stdio.h>
 2
 3 int main(){
 4         int a[2][5] = {1,3,5,7,9,2,4,6,8,10};
 5         //表示p是一个指针,指向含有五个元素的一维数组
 6         int (*p)[5],i;
 7         //p指向二维数组得第一行
 8         p = a ;
 9     //p=a 之后 , p=&a , *p = a[1].
10     //p是一个数组指针
11         for(i = 0 ; i < 5 ; i++){
12                 printf("%d ",(*p)[i]);
13         //(*p)[i] 是先取p的内容作为数组的起始地址,然后再去第i个元素。
14         //*p[i]是先取以p为起始地址的第i个元素,该元素为指针,然后取该指针的内容。
15         }
16         printf("\n");
17     //p移动到第二行
18         p++;
19         for(i = 0 ; i < 5 ; i++){
20                 printf("%d ",(*p)[i]);
21         }
22         printf("\n");
23
24         return 0;
25 }
26
27 int (*p)[5] ;//一个指针
28 int  *p[5]  ; //含有五个元素的数组,长度为5,数组中得每一个元素指向一个整型变量。

函数和指针
1.指针作为函数得参数
作用是将一个变量的地址传送到一个函数中

 1 #include<stdio.h>
 2 void change(int i , int *p){
 3         i++;
 4         if(p != NULL){
 5                 (*p)++;//根据地址找到变量b,b+1
 6         }
 7 }
 8 int main(){
 9         int a = 5 , b = 10 ;
10         change(a,&b);
11         printf("a=%d,b=%d",a,b);
12         return 0;
13 }

2.返回指针得函数
 1 int *f(int i , int j); 
() 的优先级高于 *
表示 f是一个函数,函数名前有一个指针,表示此函数得返回值类型为指针。

 1 include<stdio.h>
 2 //定义一个名称为name得指针数组,每个数组元素都指向一个字符串
 3 char *name[7] = {"monday","tuesday","wednessday","thursday","friday","saturday","sunday"};
 4 //定义一个指针,这个指针指向一个字符串
 5 char *message = "wrong input";
 6 //返回指针的函数
 7 char *week(int day){
 8         if(day < 0 || day > 7){
 9                 return message ;
10         }else{
11                 return name[day-1] ;
12         }
13 }
14
15
16 int main(){
17         int day ;
18         char *p;
19
20         printf("input a number of a week:\n");
21         scanf("%d",&day);
22
23         p = week(day);
24         printf("%s\n",p);
25
26         return 0;
27 }

3.指向函数得指针 87页----------

时间: 2024-11-06 02:34:14

Linux C 程序(TEN)的相关文章

Linux服务器程序规范

除了网络通信外,服务器程序还必须考虑许多其他细节问题,零碎,但基本上时模板式的. ---引 Linux服务器程序一般以后台形式运行.后台程序又称守护进程.它没有控制终端,因而也不会意外接受用户输入.守护进程的父进程一般是init进程(pid=1). Linux服务器程序通常有一套日志系统,它至少能输出日志到文件,有的高级服务器可以输出日志到专门的UDP服务器.大部分后台进程都在/var/log下有自己的日志目录. Linux服务器程序一般以某个专门的非root身份运行.mysqld, httpd

Linux C程序异常退出怎么办——core文件帮你忙

想必你一定遇到过Linux下程序异常退出的问题,异常退出貌似有一种神奇的魔力,会让你神经突然紧张.不要怕,Linux是很强大的,在程序退出的时候,会在可执行文件所在的目录生成一个core文件,它很好地记录了一些神秘而又必要的东西,帮助你定位到错误的根源,想想以前面试的时候人家闻到core文件,我答不上来,你说面试官会怎样想,那么就来说说core文件. core文件实际上就是一个内存映象同时加上一些调试信息. 首先,你得打开系统的core文件生成开关吧,终端中输入ulimit -c命令,若显示0表

linux应用程序开发-文件编程-系统调用方式

在看韦东山视频linux驱动方面有一些吃力,究其原因,虽然接触过linux应用程序编程,但是没有深入去理解,相关函数用法不清楚,正好看到国嵌视频对这一方面讲的比较透彻, 所以把学习过程记录下来,也作为linux应用程序开发的一个系列吧! 文件编程有两种方式,一是系统调用方式,二是库函数调用. 前者依赖特定的平台,后者不依赖平台. 系统调用:创建 int creat(const char *filename,mode_t mode); filename:要创建的文件名 mode:创建模式 S_IR

linux 统计 程序 运行时间

测试 代码运行时间 linux 中的 <sys/time.h> 中 有个函数可以获取当前时间,精确到 微秒 ---->  gettimeofday() 1 #include <sys/time.h>       // int gettimeofday(struct timeval *tv, struct timezone *tz); 2 /********************************************* 3 * struct timeval 4 *

使用RPM包工具和源码包编译安装Linux应用程序

系统命令:一般在/bin和/sbin目录中,或为Shell内部指令,完成对系统的基本管理工作,例如IP配置工具 应用程序:通常在/usr/bin和/usr/sbin目录中,完成相对独立的其他辅助任务,例如网页浏览器 Linux应用程序的组成 /usr/bin     普通可执行程序文件,普通用户即可执行 /usr/sbin    服务器程序.管理程序文件,只有管理员能执行 /etc         配置文件,文件较多时会创建子目录 /var/log     日志文件 /usr/share/doc

Linux C程序的编译

Linux C程序的编译过程 学习一门语言程序,本人觉得还是得学习它的编译规则,现在,通过小例子小结下自己对C编译的认识. /*test.c     了解C程序的编译*/ #include <stdio.h>int main(void){ printf("Hello World!\n"); return 0;} 对于test.c,我们常用一步编译到位的命令是: gcc -o test test.c  或者  gcc test.c -o test 实际上,上面的这个编译命令包

配置开发支持高并发TCP连接的Linux应用程序全攻略

http://blog.chinaunix.net/uid-20733992-id-3447120.html http://blog.chinaunix.net/space.php?uid=16480950&do=blog&id=103598 原文见:http://www.cppblog.com/flashboy/articles/47012.html1.修改用户进程可打开文件数限制 在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到

VELT-0.1.5开发:在vs2013下调试Linux GUI程序

VELT的全称是Visual EmbedLinuxTools,它是一个与visual gdb类似的visual studio插件,用以辅助完成Linux开发.利用这个插件,将可以在visual studio的IDE中进行Linux应用程序的开发(包括编译和调试),也可以进行uboot和linux内核的编译,并根据编译时的错误信息正确定位到源码.目前的版本是0.1.4,仅支持vs2013.此插件可以在CSDN下载频道下载(http://download.csdn.net/detail/lights

嵌入式linux应用程序调试方法

嵌入式linux应用程序调试方法 四 内存工具 17 4.1 MEMWATCH 17 4.2 YAMD 22 4.3 Electric Fence 24 五 C/C++代码覆盖.性能profiling工具 24 5.1 用gcov来测试代码覆盖率 25 5.2 使用gprof来优化你的C/C++程序 35 四 内存工具 您肯定不想陷入类似在几千次调用之后发生分配溢出这样的情形. 许多小组花了许许多多时间来跟踪稀奇古怪的内存错误问题.应用程序在有的开发工作站上能运行,但在新的产品工作站上,这个应用