㈠ c++ 指针与数组的转换
指针与数组,在理论上,数组在程序编码时就已经定义好了空间准备存放数据,而指针只是在程序编码时就已经定义好了一个存储地址内容的空间。
在实际操作中,指针与数组的操作基本是一样的。
看下面的例子:
char msg[]="yuejian is a handsome man\n";
通过数组元素打印:
int i;
int len=strlen(msg);
for(i=0;i<len;i++)
cout<<msg[i];
通过数组地址打印:
int i;
for(i=0;*(msg+i);i++)
cout<<*(msg+i);
通过指针打印:
char *cp;
for (cp = msg; *cp; cp++)
cout<<*cp;
你给出的第3个for语句;
for (cp = msg; cp[0]; cp++)
在c语言中通过不这样写,应该这样写:
for (cp = msg; *cp; cp++)
具体含义:
数组msg的地址赋给指针cp,打印指针cp指向的第一个字符,将指针下移一个字符的位置,看当前字符是否为“\0”,如是则结束循环,否则打印当前字符,将指针下移一个字符的位置,进入循环。
㈡ C语言指针变量名和数组名在计算中是不是可以直接相互转换啊
C++/C程序中,指针和数组在不少地方可以相互替换着用,让人产生一种错觉,以为两者是等价的。
数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。
㈢ c语言 指针输出数组
(*p)[4]是数组指针,每一个指针指向含有4个整形的一维数组;p[1]对于前面的声明来说是指针,而p[1][1]是二维数组,所以不用再加上*取值,若要加上*,
代码中:printf("%4d",p[i][j]);
可以这样处理:printf("%4d",*(p[i]+j));
㈣ C语言 怎么把指针的值 赋给另一个数组
循环赋值, 或者直接strcpy。 因为这里是字符串。
比如
#include<stdio.h>
intmain()
{
inti=0;
chara[100];
scanf("%s",a);
fun(&a);
return0;
}
intfun(int*p)
{
inti,b,c,d;
charj[100];
strcpy(j,p);
//用memcpy也可以。
//memcpy(j,p,sizeof(j));
//我想在这之后让j【100】接收到上面那个数组的值并输出我应该怎么写用指针!
return0;
}
㈤ C语言中如果将一个指针所指向的字符串赋给数组
数组声明的时候就要指定大小的
可以用memcpy,对于字符串,也可以用strcpy或strncpy(需要包含string.h)
比如:
char
*p="abc";
char
a[10];
memcpy(a,p,sizeof(a));
或者
strcpy(a,p);
或者
strncpy(a,p,sizeof(a));/*
比上面的strcpy安全
*/
PS:关于sizeof,取数组的时候是数组的大小,指针的话,32位机器,会是4,所以字符串指针不用sizeof取长度,用strlen();
㈥ C语言用指针调换数组元素
#include "stdio.h"
#define N 100
main()
{
int i,j,a[N],*p,t,count=1;
printf("the length of the munbers:\n");
scanf("%d",&i);
printf("put the %d munbers:\n",i);
for(p=a;p<a+i;p++)
{
printf("number %d : ",count++);
scanf("%d",p);
}
for(j=0;j<i-1;j++)
for(p=a;p<a+i-j-1;p++)
if(*p>*(p+1))
{t=*p;
*p=*(p+1);
*(p+1)=t;
}
printf("排序后:\n");
for(p=a;p<a+i;p++)
printf("%d ",*p);
printf("\n");
}
㈦ 请问在C语言中,函数传参时怎样利用指针传递数组
数组名就是指针,例如:
#include <stdio.h>
voidpr(char *p)
{
printf(p);
}
void main(void)
{
char s[] = "abc";
pr(s);
}
(7)c语言指针转数组扩展阅读:
注意事项
非数组类的声明尽量以指针的方式进行比较好。倘若一个指针指向的内存并不是一个数组,那么采用数组名的声明方式或许就会给人产生错误的引导。类似的,如果指向的是一个数组区域,则会给人以更加丰富的信息。例如:
int main(int argc,char* argv[])
{
/* code here */
}
与
int main(int argc,char** argv)
{
/* code here */
}
两种方式完全等价,但是前面一种能够更清晰地看出:这个参数是指向某个元素起始地址的指针,而后面的这种方式则不能够直观地看出这种含义。
㈧ c语言 怎么把指针里的内容赋值到数组里
intmain()
{
char*p="hefhiefu";
chara[10];
strcpy(a,p);
printf("%s",a);
return0;
}
㈨ C语言中,如何将一个指向整型变量的指针转换为指向一个整型数组
int *p;
int a[10];
p=&a;
㈩ C语言中指针和数组是怎样相互转换的
指针数组,就是一个数组里存放的都是指针,比如*p[8];p[0]里存放的就是一个指针数据
数组指针,数组名就是一个指向数组起始地址的指针,数组下标是萦引,比如num[0],他就相当于num+0;
num这个指针没移动,于是取的是数组的第一个。num[1]相当于数组指针移1,于是指向数组第二个