C语言常见的指针笔试题解析
什么是指针
在C语言中,指针是指向内存地址的变量。每个变量在内存中都有一个地址,而指针就是存储这个地址的变量。通过指针可以操作内存地址中的内容。
指针的声明和使用
指针的声明使用*来标记,例如:
int *p;
这个声明语句表示一个指向整型变量的指针p。如果要让指针p指向某个变量的地址,可以使用&运算符:
int a = 5;
int *p;
p = &a;
这个示例代码中,指针p被赋值为变量a的地址。操作指针指向的变量时,需要使用*运算符:
*p = 10;
这个语句将会把指针指向的变量的值改为10。
指针笔试题
在C语言的面试和笔试中,指针是一个常见的考点。下面我们来看两个指针笔试题。
示例1:指针和数组
下面的代码输出结果是什么?
int main() {
int a[5] = {1, 2, 3, 4, 5};
int *p = a;
*(p+1) = 10;
printf("%d", a[1]);
return 0;
}
解析:
首先定义了一个长度为5的整型数组a,数组中元素分别为1,2,3,4,5。然后定义一个指针p,将它指向数组a的首地址。之后使用指针运算,将p指针加1,即将指针指向了a的第二个元素。接下来,使用*运算符,把指针指向的元素的值改为10。最后打印数组a的第二个元素,输出结果为10。
示例2:指针和字符串
下面的代码输出结果是什么?
int main() {
char *str1 = "Hello, ";
char *str2 = "world!";
char *str3 = malloc(strlen(str1) + strlen(str2) + 1);
strcpy(str3, str1);
strcat(str3, str2);
printf("%s", str3);
free(str3);
return 0;
}
解析:
首先定义了三个字符型指针变量str1、str2、str3。str1指向字符串“Hello, ”,str2指向字符串“world!”。使用malloc函数申请了一段内存,这段内存的大小为str1和str2字符串长度的和再加上1(1是为了存储字符串结束符'\0')。使用strcpy把str1指向的字符串复制到str3指向的内存地址中。使用strcat把str2指向的字符串拼接到str3指向的内存地址之后。最后将拼接好的字符串输出,并使用free函数释放str3指向的内存地址。
小结
指针是C语言的一个非常重要的概念,笔试和面试中常常被考察。针对指针的常见笔试题,我们需要掌握指针的声明和使用方法,以及指针和数组、字符串的操作方式。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言常见的指针笔试题解析 - Python技术站