本篇文章给大家谈谈c语言指针习题及答案,以及c语言指针基础题对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文一览:
- 1、c语言选择题(指针)
- 2、c语言指针选择题求解
- 3、C语言指针题
- 4、C语言指针问题
- 5、c语言指针变量方面的题,求大神解答?
- 6、c语言:用指针输入两个数组|练习题
c语言选择题(指针)
选C。int a,*p;定义了一个整型变量a以及整型指针p;因此p=p可以存放a的地址。选B。int a,*p=因为a是一个变量,不存在*a这一个用法。选D。pp未定义错误。C是正确的,pp2以及p都是整型指针。a是整型变量,p是一级指针a的地址。q是二级指针p的地址。q指向null。
答案是A,首先定义p是一个指向int类型的指针,不过这个指针没有初始化,也就是没有指向。然后定义了一个int类型的变量i,这里千万不要认为i也是个指针,如果i跟p一样,要在前面也加个*号。然后分析答案: A,这里对p指向的变量进行赋值,这里是相当于初始化了。所以正确。
p1=a : 表示指针p1指向数组的头部,***设地址为0x0001。p2=&a[5] : 表示指针指向数组的第6个元素的地址(C语言的数组元素下标从0开始),***设地址为0x0006。p1-p2,即两个地址相减,0x0006 - 0x0001 = 0x0005, 即十进制的5。
①答案是为B ②*p1=*p2;的意思:【p1指向的地址的内存块的值为p2地址指向内存块上的值】③p1=p2;的意思:【p1指向的地址为p2指向的地址】④为了加深你对指针的理解,我们可以这么认为:p1是一张纸条,上面写着房间号,p2也是。p1=p2;是把p1纸条上的房间号擦掉,改成p2纸条上的房间号。
指针是个存着地址的变量,因为我们每定义一个变量,内存就会给他分配空间,那么每个变量必须会有一个存储他的地方,我们称为地址,他指向谁,里面就存着谁的地址。
A和C并是不非法操作,只是没有意义的操作,因为这两个指针都没有初始化,但,如果这两个指针初始化了之后,A和C就完全有意义而且正确了 D则不一样,一种类型的指针指向另外一种类型肯定是错误的,因为不同类型所用内存是不一样的。
c语言指针选择题求解
选C。int a,*p;定义了一个整型变量a以及整型指针p;因此p=p可以存放a的地址。选B。int a,*p=因为a是一个变量,不存在*a这一个用法。选D。pp未定义错误。C是正确的,pp2以及p都是整型指针。a是整型变量,p是一级指针a的地址。q是二级指针p的地址。q指向null。
①答案是为B ②*p1=*p2;的意思:【p1指向的地址的内存块的值为p2地址指向内存块上的值】③p1=p2;的意思:【p1指向的地址为p2指向的地址】④为了加深你对指针的理解,我们可以这么认为:p1是一张纸条,上面写着房间号,p2也是。p1=p2;是把p1纸条上的房间号擦掉,改成p2纸条上的房间号。
答案是A,首先定义p是一个指向int类型的指针,不过这个指针没有初始化,也就是没有指向。然后定义了一个int类型的变量i,这里千万不要认为i也是个指针,如果i跟p一样,要在前面也加个*号。然后分析答案: A,这里对p指向的变量进行赋值,这里是相当于初始化了。所以正确。
选项A是正确的。解释如下:p是字符串指针,它是一个变量,可以被赋值,指向新的地址。a[5]是一个字符串,a指向这个字符串的首地址,而且它是一个常量,除了初始化的时候能赋值之外,不能再被赋值了。
B选项。(p[1]+2)不能表示a[1][2]。p[0]指向a[0],同时也是指向a[0][0](a[0]与a[0][0]地址相同),p[1]指向的是a[0][1],p[1]+2是把指针再往后移动两次,依次指向a[0][2]和a[1][0],最终p指向的是a[1][0],故*(p[1]+2)代表a[1][0]的值。
D是错误的,要弄清楚这个问题,首先我们要知道指针的本质是什么 指针是个存着地址的变量,因为我们每定义一个变量,内存就会给他分配空间,那么每个变量必须会有一个存储他的地方,我们称为地址,他指向谁,里面就存着谁的地址。
C语言指针题
选C。int a,*p;定义了一个整型变量a以及整型指针p;因此p=p可以存放a的地址。选B。int a,*p=因为a是一个变量,不存在*a这一个用法。选D。pp未定义错误。C是正确的,pp2以及p都是整型指针。a是整型变量,p是一级指针a的地址。q是二级指针p的地址。q指向null。
题目 使用指针输入两个数组 代码截图【带注释】源代码【带注释】利用指针输入两个数组的代码如下:首先,需要包含头文件stdio.h。使用`int main()`函数开始程序。定义两个整型数组`a`和`b`,大小均为50。定义两个指针`pa`和`pb`,分别指向数组`a`和`b`。
如有定义char y[4]= 321则表达式 *y+2的值是5 。分析:y是字符串数组首元素3的地址,*y的值就是字符3,再加上2,就是字符5(也可以说是字符5的ASC码值)。 如有定义char z[2][4]={MAT, LAB};,则表达式*(*z+2)的值是 T。
C语言指针问题
1、如有定义char y[4]= 321则表达式 *y+2的值是5 。分析:y是字符串数组首元素3的地址,*y的值就是字符3,再加上2,就是字符5(也可以说是字符5的ASC码值)。 如有定义char z[2][4]={MAT, LAB};,则表达式*(*z+2)的值是 T。
2、在C语言中,指针的赋值是通过将变量的地址赋给指针变量来实现的。指针的基本概念 在C语言中,指针是一个变量,其特殊之处在于它存储的是其他变量的地址,而不是值本身。指针使我们能够间接地访问和修改变量的值。指针的赋值过程 当我们为指针变量赋值时,实际上是将其指向一个变量的内存地址赋给它。
3、int a[2][3], *p[3];分析:对于a来说,毫无疑问,a是一个二维数组,a的值指向int类型的起始地址。
c语言指针变量方面的题,求大神解答?
显然p是一个指针变量。while()循环括号里的返回值,为0或NULL时,while循环直接结束。比如我们定义一个int型指针变量。int *p=NULL;初值为空。那么当执行while(p);时,只有p==NULL时,while循环才会结束。所以如果我们写while(p);printf。。;那么只有当p为空时,后面的printf才会执行。
指针基类型就是指针变量可指向的变量类型。f是函数指针,f指向的函数类型是int(int)(包含一个int型返回值和一个int型形参)。所以f的基类型就是int(*)(int)。f是函数指针变量。这里四个选项只有B说***确。
++ca和&c[1]:这两个值是相等的,他们都是存放b的地址。这里要理解的是,把c[]传入fun时并没有创建整个字符数组的副本,只是创建了指针c的副本,所以c和ca同时指向一个字符串。&ca[1]和&c[1]:这两个值也相等,他们和上面的其实是一个意思。
c的值为4。注意sizeof()是求括号中变量的数据长度(即占内存的字节数),因为p是指针变量,而题中已说明占4个字节,所以结果为4。
c语言:用指针输入两个数组|练习题
1、首先,需要包含头文件stdio.h。使用`int main()`函数开始程序。定义两个整型数组`a`和`b`,大小均为50。定义两个指针`pa`和`pb`,分别指向数组`a`和`b`。输入第一组数组:使用`printf`输出提示信息。使用`for`循环和`scanf`函数读取数组`a`的5个元素。
2、第二个[_a***_]语句输出的5个内容也是相同的,都是19ff18。它们是a[1][0](元素3)的存放位置,19ff0C+3×4=19ff0c+12=19ff0c+c=19ff18。后面也是类似解释。具体ppp3的使用,是前面定义了三个字符串,此处拿来使用。
3、在swap()函数中,交换的并不是两个指针,而是两个指针指向的地址内存放的两个变量(也就是a与b)。试比较一下:int *temp;temp=p1;p1=p2;p2=temp;这才仅仅是交换的指针指向的地址(p1p2两个指针指向地址的内容a与b并没有发生改变)。
4、如要将二维数组赋给一指针数组:int p[3];int a[3][4];p++;//该语句表示p数组指向下一个数组元素。注:此数组每一个元素都是一个指针 for(i=0;i3;i++)p[i]=a[i]这里int p[3]表示一个一维数组内存放着三个指针变量,分别是p[0]、p[1]、p[2]所以要分别赋值。
c语言指针习题及答案的就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言指针基础题、c语言指针习题及答案的信息别忘了在本站进行查找喔。