内存相关

2019-05-31  本文已影响0人  事件_666

Q1
打印结果
char * ptr = "Lion";
print("%c",p++);
print("%c",
p);
答案:Li


Q2
下面代码有何错误?
void swap(int *p1,int *p2)
{
int *p;
p = *p1;
*p1 = *p2;
p2 = p;
}
答案:
p 没有分配内存

应改为
void swap(int *p1,int *p2)
{
int p;
p = *p1;
*p1 = *p2;
*p2 = p;
}


Q3
下面代码那地方有问题
char* str = malloc(100);
strcoyp(str,"abc");;
free(str);
strcpy(str,"bcd");
print(str);
答案:str野指针


Q4
"123"存在那个区
char * getstr()
{
char *temp;
temp = "123";
return temp;
}
答案:静态区


Q5

const  int i = 0;
int *j = (int *)&i;
*j = 1;
printf("i=%d,j=%d",i,*j);

输出为:0,1;
i如果去掉 const修饰 输出 1,1


Q6
有什么问题?
int i,*p;
p = (int )malloc(3sizeof(int));
for (i =0; i<3; i++) {
*(p+i)= i+1;
}
p++;
free(p);
答案;崩溃
因为多了一行p++,这是p指向2


Q7
int i =1;
printf("%d",i);
sizeof(++i);
printf("%d",i);
输出 1,1
sizeof不能用在动态分配的变量上,sizeof在编译时就运算了


Q8
下代码有什么问题?
int n ;
scans("%d",&n);
int a[n];
不能使用变量定义数组


Q9
下代码有什么问题?

define max 255

unsigned char i;
for (i =0; i<=max; i++) {
    NSLog(@"===");
}

死循环

Q10
int a[3];
a[0]=0;
a[1]=1;
a[2]=2;
int p ,q;
p = a;
q=&a[2];
printf(@"==;%d",a[q-p]);
打印:==2


Q11
char c = 'o';
printf("%lu%lu",sizeof(c),sizeof('o'));
输出:1,4;


Q12
char str1[]="abc";
char str2[]="abc";
printf("%d",(str1==str2));
char* str3 = "abc";
char* str4 = "abc";
printf("%d",(str3==str4));

输出 :0 1
字符串放在常量区


Q13
char a[]="abcd";
char b[]={'a','b','c','d'};
printf("a=:%lu,b=%lu",sizeof(a),sizeof(b));
输出
a=:5,b=4
字符串多加\0标识


上一篇 下一篇

猜你喜欢

热点阅读