预习数组指针

1. extern 是怎么使用的?

答:extern是全局变量声明

只要声明全局变量就默认 前面加extern(程序员可以不加,但编译器默认加上)

若本文件 引用别的文件中的全局变量 一定要加上extern 声明一下

例如 #include "my_Fun.c"
extern int b;//b是在my_Fun.c中声明了的一个全局变量

这个extern 是个声明他可以在任何地方声明 引用了一个全局变量 (可以试试 在main()函数执行完之后声明 也不会出错)

这样在 工程的总头文件中就不需要考虑 先#include 哪个文件了。
2."在源文件中定义 char a[Max];那么应当在相应的头文件中进行如下说明 : extern char a[];"怎么去理解这句话??
答:extern 外部声明另一个文件中的a[]。
3.“a[Max]是一个有效的地址,但该地址中的值并不是数组a 的一个元素”怎么理解??
答:a[Max]的地址是存在的,但元素是从0 - Max-1,不存在a[Max]这个元素。
4.while(*strings)为什么相当于while(*strings != NULL)?
答:*strings非空为真,while 就可以循环。
5.char a[Max];
char *p;
pa = &a;
p = a;
为什么p和pa打印同一个地址?
答:a为数组首元素的地址,&a为数组地址,两个地址是一样的。
6.char *p = "message";
char *q = "message";
p[4] = '\0';
为什么编译程序有可能只创建一个字符串??
答:message是一个字符常量时,在常量段,地址时唯一的。
7.常量指针和指针常量有什么区别?
答:常量指针指向的内容不可变,但地址可以改变,即指针可以指向别的地址;指针常量是指指针本身不可变(地址),内容可以修改。
8.什么是间接引用空指针?
答:比如 int *p = NULL;
   int *q ;
 q = p;
9.“num->{num[0], num[1]} -> { num[0][0]....};"怎么理解?
答:num 中包含{num[0], num[1]},{num[0], num[1]}中包含{num[0][0]}.
10.char e[] = {'a', 'b', 'c', 'd', 'e', 'f'};
printf("%d%d\n", sizeof(e), strlen(e));
为什么输出会是6 14?

答: e[]这个数组没有'\0'字符,strlen 不会结束,显示一个垃圾值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值