c语言-C语言指针指向数组问题

问题描述

C语言指针指向数组问题

#include

int main(){
   int a[5];
   int *p,i;
   printf("please enter ten numbers:");
   for(i=0;i<5;i++){
      scanf("%d",&a[i]);
   }
   for(p=a;p<(a+5);p++)
      scanf("%d",*p);
   printf("
");

   return 0;
}

代码如图,是课本上的例题,我运行后输入五个数字以后没有反应。而且还想问一下,将第二个for循环中的(a+5)改为(p+5)可以吗?

万分感谢!!!

解决方案

1、需要输入10个数字,你的代码没有输出,当然没有反应。
2、不可以修改。p<p+5不是永远成立了??p在++,这样会造成越界访问。

解决方案二:

最近学数据结构,在学数组与指针之间的关系的时候,发现以前一直没理解的一个问题。
首先我们看看数组与指针的一些关系吧。如果我们定义一个数组int a[ ] = {1,1,2,3,5,8,},再把一个指针int *p = a;这句话我们该怎么理解呢?其实很简单,我们只要知道这个语句是定义了一个指向整型数组的指针变量p,并且p指向数组的首地址,后面的就迎刃而解了。而a代表的是数组的第一个元素的地址,我......
答案就在这里:C语言数组与指针的问题
----------------------

解决方案三:

不可以的,因为 for(p=a;p<(a+5);p++),每次p都是在移动的。p<(a+5)实际上就是为了控制不让指针指向的地址超出数组范围。

解决方案四:

lz你的这段程序又没有什么打印结果的单纯的就是输入当然没有反应了
将第二个for循环中的(a+5)改为(p+5),每次的p的值都是在变动的,这样就一直在循环中跳不出去了

解决方案五:

把第二个scanf改为pritnf就可以打印了

解决方案六:

你确定书上写的是 scanf("%d",*p);不应该是p吗,而且你没输出,你想有什么反应。

时间: 2024-12-01 16:28:45

c语言-C语言指针指向数组问题的相关文章

c语言-数组指针指向数组的问题

问题描述 数组指针指向数组的问题 int main() { char a[5]={'A','B','C','D'}; char (*p3)[10] = &a; char (*p4)[10] = a; return 0; } int main() { char a[5]={'A','B','C','D'}; char (*p3)[3] = &a; char (*p4)[3] = a; return 0; } 这两个式子怎么理解啊?貌似指针这样指有点问题,面试题上看到的,也是醉的不行.p3+1

c语言-C语言中的指针和数组的初始化

问题描述 C语言中的指针和数组的初始化 char a[]=""abcdef"";char *p =""cdefg"";a[1]='A';p[1]='A'; 这段代码有什么问题?#include int main(){ char amessage[]=""now is the time""; char *pmessage = ""now is the time"

c语言-C语言中二级指针修改数组问题。

问题描述 C语言中二级指针修改数组问题. 数组相当于一级指针,我写了一个二级指针被调用.结果它总是宕机,求指导,谢谢. 解决方案 这段程序编译会报错吧:cannot convert parameter 1 from 'char (*)[100]' to 'char **' 可以这样 试试看#include #include #include int getMemBuf(char*& p2){ char* tmp = NULL; tmp = (char*)malloc(100); strcpy(t

printf-c++指针指向数组的问题

问题描述 c++指针指向数组的问题 以下代码段在运行时出错: printf("%s",(*st.getName())); 其中st.getName()返回一个指向数组头的指针 (* p)无法访问这个数组吗? 解决方案 %s格式后面参数需要字符数组指针,所以用p,不是*p 解决方案二: 有关动态创建释放二维数组,以及指向数组的指针问题集合有关动态创建释放二维数组,以及指向数组的指针问题集合 .有关动态创建释放二维数组,以及指向数组的指针问题集合 解决方案三: 那你为什么要加星号呢,你前面

c语言-结构体内指针字符数组的释放

问题描述 结构体内指针字符数组的释放 问题:结构体成员char* name和结构体struct student* studentIOS同时释放的话回报错,错误见代码中注释.请问这里要怎么释放呢?还是结构体里面不能这样使用指针字符数组? #include #include struct student{ int id; //长度:4 char* name; //8 int score[2]; //8 float avgScore; //4 }; void input(struct student*

php reset() 函数指针指向数组中的第一个元素并输出实例代码_php实例

reset函数将数组的内部指针指向第一个单元,并输出该数组. 基本语法 reset(array) reset() 将 array 的内部指针倒回到第一个单元并返回第一个数组单元的值. 参数介绍: 参数 描述 array 必需.规定要使用的数组. 返回值 返回数组第一个单元的值,如果数组为空则返回 FALSE. 实例 <?php $array = array('step one', 'step two', 'step three', 'step four'); // 数组默认指针指向第一个元素 e

c语言-C语言字符数组和指针的关系

问题描述 C语言字符数组和指针的关系 #include using namespace std; void reverse(char* s) { char *p,*q,temp; p = s; q = s + strlen(s) - 1; while(p<q) { temp = *p; *p = *q; p++; q--; } } int main() { char name[] = "abcdef"; //为什么换成 char* name = "abcdef"

指针与数组(二)

[例6-11]用指针法输入输出二维数组各元素.#include<stdio.h>main(){int a[3][4],*ptr;int i,j;ptr=a[0];for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",ptr++);/*指针的表示方法*/ptr=a[0];for(i=0;i<3;i++){for(j=0;j<4;j++)printf("%4d",*ptr++);printf("

深入理解C指针之四:指针和数组

原文:深入理解C指针之四:指针和数组 数组是C内建的基本数据结构,数组表示法和指针表示法紧密关联.一种常见的错误认识是数组和指针完全可以互换,尽管数组名字有时可以当做指针来用,但数组的名字不是指针.数组和指针的区别之一就是,尽管数组的名字可以返回数组地址,但是名字不能作为赋值操作的目标. 概述 数组是能用索引访问的同质元素连续集合.数组的元素在内存中是相邻的,而且元素都是同一类型的.数组的长度是固定的,realloc函数和变长数组提供了应对长度需要变化的数组的技术. 一维数组是线性结构,用一个索