码迷,mamicode.com
首页 > 其他好文 > 详细

extern 和 static和 今天的一些代码,12-03

时间:2015-12-04 00:58:34      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:

这是关于标识符的链接属性的,链接属性只有三种:external, internal, none

改变规则:

 3.1  文件作用域的变量和函数定义,即在所有 代码块和参数列表之外的标识符,使用static修饰,则具有内部链接属性。//函数声明前不能加static

 3.2  一个标识符声明为extern,并且前面已经对同一个标识符进行了声明,那么 (就是把原本为none的属性改为external)
①如果前一个声明时internal或者external,那么后一个声明与前一个相同。(即尽管后一个使用了extern,但其链接属性由前一个决定)。 
②如果前一个声明为none,或者前一个声明在当前作用域不可见,那么这个标识符的链接属性为external。  

//a.c 变量源作用域,为局部变量,全局变量缺省就是extren属性
#include <stdio.h>
void main()
{
int A = 2;
sub();
printf("%d\n", A);
}

//b.c 需要extern的变量
void sub()
{
extern int A; //这是错误的!
A = A * A; 
}

#include <stdio.h>
#include <string.h>
void main()
{
//char *p = "abcd";
char p[]= "abcd";
char c, d;
c = *(p+1);
d = p[1];
printf("%c \n", c);
printf("%c \n", d);

printf("%ld\n", p); //变量p的值,"abcd"的存储地址
printf("%ld\n", *p); //变量p自己的存储地址
printf("%ld\n", &*p); //取*p这个地址上的值,即p本身了


printf("%s \n", p);
printf("%c \n", p);
}

#include <stdio.h>
void main()
{
char const a = A;
printf("%d\n", sizeof (char));
printf("%d\n", sizeof a);
printf("%d\n", sizeof A);
}

#include <stdio.h>
void main()
{

char a[6] = { 1, 2, 3, 4, a, 6 };
char b[6] = "1234a6";
printf("%c\n", a[2]); //有点疑问,搞不懂什么意思
printf("%c\n", b[2]);
}



 

 

extern 和 static和 今天的一些代码,12-03

标签:

原文地址:http://www.cnblogs.com/htmlphp/p/5018060.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!