void GetMemory(char *p)
{
p=(char *)malloc(100);
}
void Test(void)
{
char *str = NULL;
GetMemory(str);
strcpy(str,"hello world");
printf(str);
}
请问运行Test函数的运行结果是什么?
1、运行结果是 未定义,可能出现段错误,主要原因是GetMemory
函数没有正确地修改Test
函数中str
指针的值
char *GetMemory(void)
{
char p[] = "hello world";
return p;
}
void Test(void)
{
char *str = NULL;
str = GetMemory();
printf(str);
}
请问运行Test函数的运行结果是什么?
2、该题运行的结果不可预测,可能会导致出现段错误,主要原因GetMemory
函数返回了指向局部数组p
的指针,而该数组在函数返回后就已经不存在了
void GetMemory(char **p,int num)
{
*p = (char *)malloc(num);
}
void Test(void)
{
char *str = NULL;
GetMemory(&str,100);
strcpy(str,"hello");
printf(str);
}
请问运行Test函数的运行结果是什么?
3、malloc(num)只分配了num
字节的内存,但没有为字符串的终止 null 字符(\0
)分配额外的空间,
printf(str);
是不正确的,因为它没有指定格式字符串
如果 malloc
成功分配了内存,但随后程序没有通过 free
释放它,那么就会发生内存泄漏
如果 malloc
调用失败(例如,由于内存不足),它将返回 NULL
。在这种情况下,strcpy(str, "hello");
将尝试向 NULL
指针写入数据,这会导致运行时错误
最终结果时程序不正确,无法正确输出
void Test(void)
{
char *str = (char *)malloc(100);
strcpy(str,"hello");
free(str);
if(str!=NULL)
{
strcpy(str,"world");
printf(str);
}
}
请问运行Test函数的运行结果是什么?
4、Test
函数的运行结果是不确定的,很可能导致程序崩溃或产生其他严重的错误,
实际上是一个野指针
用变量啊给出下面的定义
a)一个整型数
b)一个指向整型数的指针
c)一个指向指针的指针,她指向的指针是指向一个整型数
d)一个有10个整型数的数组
e)一个有10个指针的数组,该指针是指向一个整形数的
f)一个指向有10个整型数数组的指针
g)一个指向函数的指针,该函数有一个整型参数并返回一个整型数
h)一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数
5、a)int a b)int *p=&a c)int **p=p d)int arr[10]
e)int *p[10] f)int *p=arr g)int(*p)(int) h)int(*p)(int)[10]
char str[] = "Hello";
char *p = str;
int n = 10;
请计算
sizeof(str) =
sizeof(p) =
sizeof(n) =
6、str=6 p=8 n=4
void Func(char str[100])
{
}
请计算
sizeof(str) =
7、 8
void *p = malloc;
请计算
sizeof(p) =
8、 8
int counter(int i)
{
static int count = 0;
count = count+i;
return(count);
}
main()
{
int i,j;
for(i=0;i<=5;i++)
{
j=counter(i);
}
}
本程序直行道最后j的值是
(a)10
(b)15
(c)6
(d)7
9、 b
main()
{
struct node
{
int a;
int b;
int c;
};
struct node s = {3,5,6};
struct node *pt = &s;
printf("%d",*(int*)pt);
}
这段程序的输出是:
a)3
b)5
c)6
d)7
10、 a
int foo(int x,int n)
{
int val;
val = 1;
if(n>0)
{
if(n%2==1) val = val *x;
val = val * foo(x*x,n/2);
}
return val;
}
这段代码对x和n完成什么样的功能(操作)?
a)x^n(x的n次幂)
b)x*n(x与n的乘积)
c)n^x(n的x次幂)
d)以上均不是
11、 a
main()
{
int a[5] = {1,2,3,4,5};
int *ptr = (int*)(&a+1);
printf("%d %d",*(a+1),*(ptr-1));
}
这段程序的输出是:
a)2 2
b)2 1
c)2 5
d)以上均不是
12、 c
void foo(int [][3])
main()
{
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
foo(a);
printf("%d",a[2][1]);
}
void foo(int b[][3])
{
++b;
b[1][1]=9;
}
这段程序的输出是:
a)8
b)9
c)7
d)以上均不对
13、 a
main()
{
int a,b,c,d;
a=3;
b=5;
c=a,b;
d=(a,b);
printf("c=%d",c);
printf("d=%d",d);
}
这段程序的输出是:
a)c=3 d=3
b)c=5 d=3
c)c=3 d=5
d)c=5 d=5
14、 c
main()
{
int a[][3] = {1,2,3 ,4,5,6};
int (*ptr)[3]=a;
printf("%d %d",(*ptr)[1],(*ptr)[2]);
++ptr;
printf("%d %d",(*ptr)[1],(*ptr)[2]);
}
这段程序的输出是:
a)2 3 5 6
b)2 3 4 5
c)4 5 0 0
d)以上均不对
15、a