1.
给出以下定义,下列哪些操作是合法的(A)
const char* p1 = “hello”;
char* const p2 = “world”;
A.p1++; B.p1[2] = ‘w’; C.p2[2] = ‘l’; D.p2++;
解析:const:定义常变量,变量变成只读,即不能做左值,字符串常量不允许修改,所以B、C错误!const修饰p2,所以p2不允许修改,D错!
2. 下面结构体
struct s1
{
char ch,*ptr;//1+3,4
union
{
short a,b;//2,2
unsigned int c:2,d:1;//(2+1) 所以是1+3=4
}; //4
struct s1 *next;//4
};
sizeof(struct s1)是(16字节)
3. 使用malloc系统调用分配的内存是在(堆)上分配
4.求(p-(char *)(st)的值
#include<stdio.h>
int main()
{
struct st_t
{
int status;//4
const char* p1 = “hello”;
char* const p2 = “world”;
A.p1++; B.p1[2] = ‘w’; C.p2[2] = ‘l’; D.p2++;
解析:const:定义常变量,变量变成只读,即不能做左值,字符串常量不允许修改,所以B、C错误!const修饰p2,所以p2不允许修改,D错!
2. 下面结构体
struct s1
{
char ch,*ptr;//1+3,4
union
{
short a,b;//2,2
unsigned int c:2,d:1;//(2+1) 所以是1+3=4
}; //4
struct s1 *next;//4
};
sizeof(struct s1)是(16字节)
3. 使用malloc系统调用分配的内存是在(堆)上分配
4.求(p-(char *)(st)的值
#include<stdio.h>
int main()
{
struct st_t
{
int status;//4