有关指针的例题,C语言关于指针的题目

1,C语言关于指针的题目你的排版太差了如上图,17行开始的 for循环 判断 子串 是否匹配就存在问题,当 *lin 与 *yi 相同时,不仅 yi++, 还要 lin++ (这是你漏掉不存在的部分),之后的代码就没看了,可读性较差,另外 13和 14行 完全没必要 使用 yi 和lin变量, 可以直接操作 str和 substr
2,计算机2级 关于指针的题目第一题选择D 题目的定义是,开辟n变量为int型,p是一个指向n的指针,q是一个指向p的二维指针 。我搞个示意图就是这样q----->p----->nn就是“p所指” 也就是*p可以直接进行赋值 。那么,n和q是什么关系呢,答案是n是“q所指的所指”就是**q,这点不难理解就好 。所以答案显然易见,A、B的对象都是指针p , 所以不能直接赋值 。C中,q的定义是二维指针 , 所指的对象只能是指针,(**q=&p)q=p的意思是q指向p所指,而p所指n是int型的变量,所以,C 也错 。D的意思是对“p所指”赋值为5,显然p所指就是n , 这个语句是合法的 。第二题请稍等,c++的代码不是很熟,我去翻翻书 。
3,一个和指针有关的C语言题int main(void) char a[30]; char* b = (char *)malloc(20 * sizeof(char)); printf("%d,", sizeof(a));//数组大小是30, printf("%d,", sizeof(b));//注意b是指针,在32位系统中,指针永远是4,16位中指针是2,所以这里不是4就是2. printf("%d,", sizeof(a[3]));//一个char,所以是1 printf("%d,", sizeof(b + 3));b+3是一个地址值,所是4或2 printf("%d", sizeof(*(b+4)));这是指针所指的第5个char,所以大小是1 return 0;}结果是30,4,1,4,1(32位的C编译器)或30,2,1,2,1(16位的C编译器)【有关指针的例题,C语言关于指针的题目】
4,3道关于C语言指针的题目第三题和第四题LZ已经给出答案了 。。还要问什么呢??第五题的错误是输入完成的时候,指针p已经指向a的最后了 。而输出的时候p继续后移,明显已经指向a之外了,正确的做法应该是输出的时候让p重新指向a的首地址 。代码如下:main()p=a;for(j=0;j<10;j++)scanf("%d",p++);for(j=0,p=a;j<10;j++,p++)//让p重新指向a的首地址printf("%d",*p);}第二小问的修改是不行的,因为a是数组名,不是指针 , 它可以代表数组的首地址,但不是像指针一样进行指向移动的操作 。如果要类似的操作的话 , 应该是用指针指向首地址,然后用指针移动指向并输出 。。如下代码,黑体表修改:main()p=a;for(j=0;j<10;j++)scanf("%d",p++);for(p=a;p<(a+10);p++)printf("%d",*p);}5 , c语言的指针题目/*src 源字符串指针dest 目标字符串指针,缓冲长度必须要足够 , 必须要大于等于 n-mpos 开始拷贝位置m返回值:-1 字符串指针为空-2 pos超出src范围>0 拷贝的字符串长度,也就是dest字符串的长度*/int CopySubString( char* src, char* dest, int pos )int i, j;/*判断指针是否为空*/if( !src || !dest )return -1;/*判断pos是否为负数*/if( pos < 0 )return -2;/*安全的寻找pos开始的位置 , 防止越界*/for( i = 0; src[i] && i < pos; i++ );/*判断pos是否大于src的长度*/if( !src[i] )return -2;/*开始从src的pos位置拷贝字符串到dest*/for( j = 0; src[i]; i++, j++ );dest[j] = src[i];}/*设置dest的结束符*/dest[j] = 0;/*返回拷贝的字符数量*/return j;}#include <stdio.h>#include <string.h>void main() int m; char * p; p=c; puts("please enter the string:\n"); gets(c); puts("enter the number:\n"); scanf("%d",&m); if(m>strlen(c)) puts("error"); elsestrcpy(str,p+m-1);puts(str);}#include <string.h>int CopyStr(char * dst,char *src,int m)if(m > strlen(src) //报错return 1;elsestrcpy(dst,src+m);//dst 是目标字符串 。}}

    推荐阅读