- 以下为Linux下的32位C程序,请计算sizeof的值
Char str[] = “hello”;
Char *p = str;
Int n = 10;
请计算 (1) sizeof (str) = (2) sizeof(p) = (3) sizeof(n) =
sizeof(str) = 6;字符串后面以‘\0’结束,一共占6个字节;
sizeof(p) = 4 ; 32位系统中指针变量占4字节;
sizeof(n) = 4 ;int类型占4个字节;
- void Func(char str[100])
{
.......
}
请计算sizeof (str) =
sizeof(str) = 4, 当函数参数为数组时,这个数组参数会被解释为指向第一个元素的指针,所以sizeof(str)实际是指针的大小;
- void *p = malloc(100);
请计算 sizeof(p) =
sizeof(p) = 4; 计算的是指针p的大小,不是malloc(100)分配的内存大小
2.用变量a给出下面的定义
e) 一个有10个指针的数组,该指针是指向一个整型数的;
int * p[10];
f) 一个指向有10个整型数数组的指针 ;
int (*P)[10];
g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数;
int (*g)(int);
h) 一个有10个指针的数组,该指针指向一个函数,该 函数有一个整型参数并返回一个整型数;
int (*a[10])(int);
3请问以下代码有什么问题:
int main()
{
char a;
char *str=&a;
strcpy(str,"hello");
printf(str);
return 0;
}
未定义行为,使用
strcpy
会导致内存溢出,可能会崩溃或其他不稳定的行为。为了避免未定义行为,你应该为str
分配足够的内存来存储字符串"hello"
。你可以使用malloc
来动态分配内存,或者使用一个足够大的字符数组。
int (*s[10])(int) 表示的是什么啊
int (*s[10])(int) 函数指针数组,每个指针指向一个int func(int param)的函数。
11、 char szstr[10];
strcpy(szstr,"0123456789");
产生什么结果?为什么?
长度不一样,出现段错误。
12、数组和链表的区别?
【标准答案】数组:数据顺序存储,固定大小;
链表:数据可以随机存储,大小可动态改变
13、 void main()
{
char aa[10];
printf(“%d”,strlen(aa));
}会出现什么问题?打印结果是是多少?
【标准答案】sizeof()和初不初始化,没有关系,strlen()和初始化有关,打印结果值未知。