- 有定义语句:
则正确的输入语句是______。int b; char c[10];
A.scanf("%d%s",&b,&c);
B.scanf("%d%s",&b,c);
C.scanf("%d%s",b,c);
D.scanf("%d%s",b,&c);
答案:AB
- 解析:对于数组,变量名就是地址。c是c[0]的地址,&c是整个c[0]的首地址,二者虽然值相同但是所占内存空间不一样
代码实践:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<iostream>
int main()
{
char c[10];
printf("指针测试:\n");
printf("ptr of c %p\n", c);
printf("ptr of &c %p\n", c);
printf("-------------------\n");
printf("从地址c输入:\n");
scanf("%s", c);
printf("%s\n", c);
printf("-------------------\n");
printf("从地址&c输入:\n");
scanf("%s", &c);
printf("%s\n", c);
return 0;
}
进阶版:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<iostream>
int main()
{
int a[8];
char c[10];
printf("指针测试:\n");
printf("ptr of a %p\n", a);
printf("ptr of &a %p\n", &a);
printf("ptr of c %p\n", c);
printf("ptr of &c %p\n", c);
printf("-------------------\n");
printf("从地址a输入:\n");
scanf("%s", a);
printf("%s\n", a);
printf("-------------------\n");
printf("从地址&a输入:\n");
scanf("%s", &a);
printf("%s\n", a);
printf("-------------------\n");
printf("从地址c输入:\n");
scanf("%s", c);
printf("%s\n", c);
printf("-------------------\n");
printf("从地址&c输入:\n");
scanf("%s", &c);
printf("%s\n", c);
return 0;
}
2. 关于内存的分配与释放,下列说法正确的是
A. C语言的内存分配及释放为new/delete函数。
B. realloc调用形式为(类型*)realloc(*ptr,size):将ptr内存大小增大到size。
C. C++语言的内存分配及释放函数有:malloc,calloc,realloc,free等。
D. malloc和calloc的区别是分配连续区域长度为1块与n块的区别
正确答案:B D
realloc参考链接:https://cloud.tencent.com/developer/section/1009110
malloc参考链接:https://cloud.tencent.com/developer/section/1009109