新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
BCD很明显是错误的
成都创新互联公司专业为企业提供古城网站建设、古城做网站、古城网站设计、古城网站制作等企业网站建设、网页设计与制作、古城企业网站模板建站服务,10多年古城做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
B ,数组名不是变量
C a+1和*(a+1)仅数值上相同 a+1类型是int(*)[3], *(a+1)是int*
D 数组当函数参数时退化为指针,所以指针也可以当实参,而不仅仅是数组
那就只能选A了
指针实际就是实体的代表而已,不过指针是个实体的存放地址;可以进行地址运算;
如:p++,指针指向下一地址;p=q以q指针指向地址作为p指针的地址;
普通的用法是,声明实体或实体数组,用指针指向实体的地址:实体 b,g[8],*p;
p=b;数组名称实际就是固定长度的指针,所以常有:p=g;p=g+2相当于p=g[2];
如函数 void fun(int b[]);可以用int *p;fun(p)来调用;p代表数组b;
如函数 void fun(int *p);可以用int b[6];fun(b)来调用;b相当于指针p;
scanf()函数读入数据后,会将最后的空白符(space、Tab和CR)留在输入缓冲区,如
int a;
char str[100];
scanf("%d%s",a,str);
用 23 asdCR响应时,3前面的空格和3与a之间的空格被当作分隔符读入后丢弃,而最后的CR仍保留在输入缓冲区中。
gets()函数对空白符的处理方法与scanf()不同,会将所有的空白符看作是串的一部分,以CR作为结束读入的字符,这个CR不会保存在串中,遇到CR后,会在串为添加串结束符'\0',也就是说,gets()函数会将输入缓冲区中每个字符都读出来。
为了防止读入的字符串长度超过数组长度,目前流行的做法是用fgets(char str[],const size_t size,stdin)函数读取字符串,读到size - 1个字符后,立刻结束读入过程,并将str[size]置为'\0'。如果输入的字符数不到size - 1个,则会将'\n'作为字符串的最后一个有效字符保存在str中(这些美国人是怎么想的?)。
编程中要注意的问题是:
一、如果scanf()后还是scanf(),第一个scanf()留下的空白符不会影响到下一个scanf()得到有效数据。
二、如果scanf()后是gets(),那么scanf()留下的CR会使gets()立即结束读入过程,根据gets()的转换规则,从而使gets()读取的字符串的第一个字符为'\0'(空串)。
三、如果scanf()后是fgets(),情况与二相同。
四、如果gets()或fgets()后是scanf(),gets()不会留下任何残留,即使留,也不会影响scanf()的正常读入。
通过以上的介绍,我们知道,在读入数据过程中,偶尔会添加语句getchar()的目的何在,事实上,只有在scanf()后是gets()或fgets()时是必要的,其他情况下是不必要的。
******************************************************************************
* 以上说的都是个人不全面的理解,偏颇之处难以避免,欢迎各位吐槽 *
******************************************************************************