C笔记
文章平均质量分 77
Sheamus_
帅,帅
展开
-
菱形
输入正整数n代码如下:#include#includeint main(){ int i,j,k,n; scanf("%d",&n); for(i=1;i<=(n+1)/2;i++) { for(k=1;k<=(n+1)/2-i;k++) printf(" ");//打印出每行的空格 for(原创 2013-09-25 22:16:13 · 797 阅读 · 0 评论 -
&a+1问题
请先看以下程序:Q:若 int a[5];则 &a+1 的含义是甚么?A:&a+1 不是表示a的地址(设为Ox0010)加1,变为0x0011. 由于a为包括5个int类型的数组,则"&a+1"中的"+1"表示为相当于"1"个a大小的空间(或成为偏移),此时&a+1 表示 a[5].Q:若 int* ptr = (in转载 2013-11-01 11:51:59 · 723 阅读 · 0 评论 -
数组和指针的区别
首先对于编译器而言,一个数组是一个地址,一个指针是一个地址的地址。 数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。数组名对应着(而 不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。 例如: void main(void) { int a[10]; a ++;//error, a is lef转载 2013-11-16 11:44:42 · 550 阅读 · 0 评论 -
c语言的内存机制以及分配情况
指向字符串常量的指针和字符串数组在使用时是有区别的。看下面两个函数//执行通过,返回“hello world”char *PtrChar(){ char *pc = "hello world"; return *r;}//执行错误,不能返回局部变量char *ArrChar(){ char ac[] = "hello world";转载 2013-11-02 17:33:11 · 847 阅读 · 0 评论 -
共用体问题
最近在QQ群里发现有好多人问这个问题!输入这段程序:#includeint main(){ union D { int a; char b; float c; }; D d; d.a=97; printf("%d\n",d.a); printf("%c\n",d.b);原创 2013-11-13 17:50:25 · 1226 阅读 · 0 评论 -
万年历
这 个万年历有能用上下左右键来控制几号的改变和年份的改变!希望网友测出bug来!#include#include#include//判断是否为闰年int Leap(int y){ int s=0; if((y%4==0)&&(y%100!=0)||(y%400==0)) { s=1; } return s;}int原创 2013-11-07 17:01:23 · 900 阅读 · 0 评论 -
int *p[n]; int (*p)[n];
在编程中,会遇到这样的情况:int *p[n];int (*p)[n];还有一种情况是声明函数:int *p();int (*p)();这些分别表示什么意思呢?表面上看这些问题,好像是指针,但是,如何来正确判断这几个定义,需要我们首先有运算符优先级的概念。 在c语言中,[]和()的优先级比星号(星号的名字叫做“指针运算符”)要高,所以,在这几个声明中,转载 2013-11-13 16:58:27 · 1026 阅读 · 0 评论