- 浏览: 283093 次
- 性别:
最新评论
文章列表
指针的基本操作以及关于指针的注意事项
- 博客分类:
- C/C++
一. 指针的基本操作有:赋值(assignment),求值(value-finding)或取值(dereferencing),区指针地址,将一个整数家给指针,增加指针的值,从指针中减去一个整数,减小指针的值,求差值(Differencing),比较。
下面以一个例子进行说明:
#include<stdio.h>
int main(void)
{
int *ptr1,*ptr2,*ptr3;
int urn[5] = {100,200,300,400,500};
ptr1 = urn; //把一个地址赋给指针
ptr2 = &urn ...
关于*与++的优先级
- 博客分类:
- C/C++
C中一元运算符*和++具有相等的优先级,但它们在结合时是从右向左的。
例:
#include<stdio.h>
int data[2] = {100,200};
int moredata[2] = {300,400};
int main(void)
{
int *p1,*p2,*p3;
p1 = p2 = data;
p3 = moredata;
printf("*p1 =%d, *p2 = %d, *p3 = %d\n",*p1,*p2,*p3);
printf("*p1++ = %d,*p2++ = ...
C中关于数组参数的传递
- 博客分类:
- C/C++
编写一个对数组进行操作的函数,目的是返回数组内所用元素的和。
第一种形式:函数原型为int sum(int ar[],int n)
#include<stdio.h>
#define SIZE 4
int sum(int ar[],int n);
int main(int argc,char *argv[])
{
int arrays[SIZE] = {1,2,3,4};
long answer;
answer = sum(arrays,SIZE);
printf("total:%ld.\n",answer);
...
下面介绍一下关于数组的一些说明:
在数组声明时必须定义数组长度,但也可利用空的方括弧[]对数组初始化,使编译器自动根据列表中的值自动计算数组长度。 例:
int array[12];
int array[]={1,2} //
但是若数组声明的方式是这样的:
int array[12] = {1,2} //其余未被声明的会初始化为0
即:如果不初始化数组,数组元素和未初始化的普通变 ...
1.sizeof函数
sizeof函数返回表达式所占的内存空间(以字节为单位)
例:
#include<stdio.h>
#define MONTHES 12
int main(void)
{
int days[MONTHES] = {31,28,31,30,30,30};
int len = sizeof(days);
printf("days:%d",len);
return 0;
}
这段程序输出的结果为:days:48
因为一个int型在内存中占4个字节,而days数 ...
C中字符串的几种定义方法及说明
- 博客分类:
- C/C++
在C中定义字符串有下列几种形式:字符串常量,char数组,char指针
1.字符串常量
即:位于一对双括号中的任何字符。双引号里的字符加上编译器自动提供的结束标志\0字符,作为
一个字符串存储在内存中。如:printf("%s","hello"); //"hello"
如果字符串文字中间没有间隔或间隔的是空格符,ANSI C 会将其串联起来。例:
char greeting[50] = "hello,and" "how are" "you"; ...
C输入输出的一个例子(不受Enter键影响)
- 博客分类:
- C/C++
int guess = 1;
char yn;
printf("enter a number:");
printf("Uh....is %d?\n",guess);
while((yn= getchar()) != 'y')
{
if( isalpha(yn))
{
printf("well,then ,is it %d?\n",++guess);
}
else
{
printf("input error\n&quo ...
C语言字符的输入输出原理
- 博客分类:
- C/C++
例:
#include<stdio.h>
int main(void)
{
char ch;
while((ch = getchar()) != '#')
putchar();
return 0;
}
在这个程序中,运行情况如下:
hello,world [Enter] -->输入"hello,world"后输入Enter键
hello,world ...
C语言中对scanf输入非法字符的检查和处理
- 博客分类:
- C/C++
在C中scanf()函数返回成功读入的变量的个数。如果它没有读取任何项目(输入非法字符,例如:希望得到数字,而用户却输入的是字符),scanf()返回值为0.当检测到“文件结尾”是,会返回EOF(EOF是在文件stdio.h中定义的特殊值,一般,#define指令把EOF的值定义为-1).
利用scanf()以上的性质,可对输入值进行检验,代码如下:
#include<stdio.h>
int main(void)
{
int num;
int status;
printf("input the value of num:" ...
在vs2008中编写c控制台程序,运行完后经常一闪而过,以下是结合网上内容及自己体会整理的解决办法:
方法1:
运行时,用Ctrl+F5 ,就会在程序结束时显示“请按任意键继续. . .” (原理我也不知道)
方法2:
在程序的结束位置添加
//fflush(stdin);//清除输入缓冲区的数据, (有的时候需要这一语句,详情见说明1
getchar();
说明1:对于程序中有scanf语句的,要加上fflush(stdin);
因为在用s ...
C打印系统整型,字符型等所占位数
- 博客分类:
- C/C++
C语言代码:
#include<stdio.h>
int main(void)
{
printf("Type int has a size of %u bytes.\n",sizeof(int));
printf("Type char has a size of %u bytes.\n",sizeof(char));
printf("Tyep long has a size of %u bytes.\n",sizeof(long));
printf("Type d ...
UBUNTU开启TELNET服务
- 博客分类:
- linux学习
源自:
http://forum.ubuntu.org.cn/viewtopic.php?t=85766&sid=4e2c89918a6a4cc0bc7ab9a2c7c0418b
UBUNTU开启TELNET服务
1. sudo apt-get install xinetd telnetd
2. 安装成功后,系统也会有相应提示,
sudo vi /etc/inetd.conf并加入以下一行
telnet stream tcp nowait telnetd /usr/sbin/tcpd
/usr/sbin/in.telnetd
3. sudo vi /et ...
tarball的管理与建议
- 博客分类:
- linux学习
源自:http://hi.baidu.com/ilovejoy/blog/item/a4d2e63d8a3b74e33d6d9787.html
Tarball的管理与建议:
好了! 在我们知道了原始码的相关资讯之后,再来要了解的自然就是如何使用具有原始码的Tarball 来建立一个属于自己的套件啰! ...
Linux启动过程(详细说明)
- 博客分类:
- linux学习
源自:http://forum.ubuntu.org.cn/viewtopic.php?t=5408
本文以RedHat9.0和i386平台为例,剖析了从用户打开电源直到屏幕出现命令行提示符的整个Linux启动过程。并且介绍了启动中涉及到的各种文件。
阅读Linux源代码,无疑是深入学习Linux的最好方法。在本文对Linux启动过程的介绍中,我们也尝试从源代码的视角来更深入的剖析
Linux
的启动过程,所以其中也简单涉及到部分相关的Linux源代码,Linux启动这部分的源码主要使用的是C语言,也涉及到了少量 ...
linux 系统启动流程
- 博客分类:
- linux学习
linux系统的启动过程是这样的:
加载BIOS的硬件信息,并获得第一个启动设备的代号。
读取第一个启动设备的MBR的引导加载程序(即lilo,grub,spfdisk等)的启动信息。
加载核心操作系统的核心,核心开始解压缩(同时可能通过initrd建立虚拟盘(RAM Disk)协助启动过程),并尝试驱动所有的硬件设备。
核心执行init程序并获取运行信息。
init执行/etc/rc.d/rc.sysinit文件。
启动核心的外挂模块(/etc/modprobe.conf).
ini ...