标签:style blog http color io os 使用 ar for
一:系统中内存的结构
4g 起始地址为bfffffff |
3g 起始地址为7fffffff |
2g 起始地址为3fffffff |
1g 起始地址为00000000 |
上图所示,虚拟内存为4g,操作系统规定应用程序只能在前3g ,后面1g是操作系统使用。涉及到内核编程时使用。
二:指针和数组介绍:
指针需要了解的是 指针的类型 指针所指向的类型 指针的值或者说是指针所指向的内存区,还有指针本身所占据的内存区
& 取地址符号 , * 解地址。
数组名为数组的首地址。
三:C数据类型
1.基本数据类型 int char long ...
2.结合 [ ] * 不能单独使用
3.自定义: struct union ...
四 :上课练习编程题目:
1.
#include<stdio.h> int main() { int i = 10; int *p = &i; int** k = &p; printf("i 的地址为%p \n",&i); printf("i 的地址的值为%d \n",*(&i)); printf("i 的地址为%p \n",p); printf("i 的地址的值为%d \n",*p); printf("p 的地址为%p \n ",&p); printf(" p 的地址里的值为%p\n",*(&p)); printf(" p 的地址里的值为%p\n",*k); printf("k 的地址为i%p\n",&k); }
通过上面的程序 ,了解&和*的功能。 分析 可知 p是指针变量 , 用来存放i的地址。p本身也占据内存 。
2.
#include<stdio.h> int hello(int *p) { printf("*p is %d\n",*p); *p = 100; } int main() { int i = 10; hello(&i); printf("i is %d\n",i); } ~
在子函数中,使用传指针变量来改变主函数中的值。
3.
#include<stdio.h> int swap(int *a,int *b); int swap2(int *a ,int *b); int swap3(int *a,int *b); int main() { int a = 5; int b = 6; swap(&a,&b); printf("a=%d,b=%d\n",a,b); swap2(&a,&b); printf("a=%d,b=%d\n",a,b); swap3(&a,&b); printf("a=%d,b=%d\n",a,b); } int swap(int *a, int *b) { int temp=0 ; temp = *a; *a = *b; *b = temp; } int swap2(int *a ,int *b) { *a = *a + *b; *b = *a -*b; *a = *a - *b; } int swap3(int *a ,int *b ) { *a = *a ^ *b; *b = *a ^ *b; *a = *a ^ *b; }
交换两个数的值有三种方式,使用中间变量,使用加减 ,使用位运算,要注意的是,使用加减时要注意数值溢出
4.
#include<stdio.h> int main() { int i = 654; printf("%d", printf("%d",printf("%d",i))); }
遇到无从下手时,可以查看函数的手册 通过 man 3 printf 查看可知 ,printf返回的是输出的字符个数(\o 不算)
所以最后输出的结果是 65431
5 .给定一个数值 判断是一年中的几月几日 忽略闰年
#include<stdio.h> int showmd(int n); int main() { int mouth[12] = {31,28,31,30,31,30,31,31,30,31,30,31}; int m = 12; int d = 31; int days = 0; int i ; for(i=0;i<m-1;i++) { days += *(mouth+i); } printf("days is %d\n",days+d); showmd(days+d); } int showmd(int n) { int i; int j; int mouth[12] = {31,28,31,30,31,30,31,31,30,31,30,31}; int days = 0; for(i=0;i<12;i++) { days += *(mouth+ i); if(days >= n) { j = days -n ; printf("月份为%d,日期为%d\n",i+1,*(mouth+i)-j); break; } } } "test.c" 43L, 547C 1,1 Top
6.
#include<stdio.h> int main() { int n; int i; for(i=0;i<120;i++) { if(i%7==0) { if((i%2==1)&&(i%3==2)&&(i%4==3)&&(i%5==4)&&(i%6==5)) printf("%d\n",i); } } } ~
7.
#include<stdio.h> int main() { int i,j,sum; for(i=2;i<1000;i++) { sum = 0; for(j=1;j<i;j++) if(i%j == 0) sum +=j; if(sum == i) printf("完全数为%d\n",i); } }
标签:style blog http color io os 使用 ar for
原文地址:http://www.cnblogs.com/linrong/p/4017612.html