c 专家编程

总结:

-2>
int * a = NULL;
10         int *s[3] = {a};
11         int ss[3]={1,2,3};
12         a = ss;
13         printf("%d,\n",*a);
14         printf("%d,\n",*(a+1));
15         printf("%d,\n",*(++a)); //2
16         printf("%d,\n",*(a++)); //2  *(++a) = 3
17         a = a+1;
18         printf("%d,\n",*a);
19         const int c = 1;
20        int os[c];
21        return 1;


-1>
m[i++]= y
等于: m[i] = m[i]+y; i++

m[++i]=y
等于:
i=i+1
m[i] =m[i]+y

0>>指针与数组的区别
指针,保持数据的地址
数组,保持数据
指针,间接的访问数据,首先取得指针的内容,在把它当作地址,然后重这个地址取出数据,
如果指针有[i],则把指针的内容加 i ,在获取数据
数组直接访问数组
指针:通常用于动态的数组结构,相关的函数:malloc(),free(),通常指向匿名数据
数组:通常指向固定数据,且类型相同的数据,隐士分配和删除,自身即为数据名



1>>
static
1: 在函数内部,表示变量的值,在各个函数调用的时候,值是保持延续的
2:在函数这一级,表示函数只对本文件有效
extern
1: 用户函数定义,表示全局可见
2:用户变量表示在其他地方定义
void
1:做为函数的返回类型,表示不返回任何值
2:在指针声明中,表示通用指针的声明
3:位于参数列表中表示没有参数
*
1:乘法运算
2:用于指针,间接引用
3:在声明中表示指针
&
1:位的and操作
2: 取地址
=
1;赋值
==
2:比较
2>>>>>>>>>>>>>>>
#define STRCMP(a,b,c) (strcmp(a,c) b 0)
if(STRCMP("A",==,"A")){
16         printf("===========\n");
17
18         }


3>>>>>>>>>>>>>>>
int *intq = NULL;
  8          int *q[]={intq};// 包含整形指针数组的数组
  9          int ar[]={1,2,3};
10          int *qi = ar;// 对任何数组的取值都是非法的,除了对字符数组
11          printf("ar---->:%d\n",qi[0]);
12          printf("ar---->:%d\n",*qi);
13          qi++;
14          printf("ar---->:%d\n",*qi);
15
16          char ss[] = "hello\n";
17          char *cc = ss;
18          printf("cc: %s\n",cc);
19          printf("cc--: %c\n",*cc);


            int * a = NULL;
10         int *s[3] = {a};
11         int ss[3]={1,2,3};
12         a = ss;


猜你喜欢

转载自aircoder.iteye.com/blog/1924072