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标识