当前位置:首页 » 编程语言 » c语言char数组指针
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言char数组指针

发布时间: 2022-02-05 08:46:24

c语言 字符指针数组

#include"stdio.h"
#include<stdlib.h>
#define A 7
void main()
{
int i;
char **p;
p=(char **)malloc(sizeof(char *));
for(i=0;i<A;i++)
p[i]=(char*)malloc(sizeof(char));

for(i=0;i<A;i++)
{
gets(p[i]);
printf("%s\n",p[i]);
}
for(i=0;i<A;i++)
puts(p[i]);
getch();
}
我给你改的

㈡ c语言指针与字符数组

注意这个位置的标志。(p-2)是常量,不是变量。因为字符串在前面定义的常量。屏幕上的输出h。并且在d与h之间有一个空白,因为前面输出一个字符''。

㈢ c语言字符数组指针

#include "stdio.h"
#include "string.h"
void main()
{
char a[81]="";
char *p=a;
int n,k,pos;
puts("input the data");
gets(a);
n=strlen(a);
puts("the position you want to delete");
scanf("%d",&k);
for (p=&a[k-1];p<=a+n;p++)
{
char temp;
temp=*p;
*p=*(p+1);
*(p+1)=temp;
}
*p=0;
puts(a);
}
#include "stdio.h"
#include "string.h"
void main()
{
char a[5]="";
char *p[5];
char *max;
for (int i=0;i<5;i++)
{
p[i]=&a[i];
}
puts("input five num");
for (i=0;i<5;i++)
{
fflush(stdin);
scanf("%c",&a[i]);
}
for (i=0,max=p[i];i<5;i++)
{
if (*p[i]>*max)
{
*max=*p[i];
}
}
printf("%c",*max);}

㈣ C语言 字符串数组 指针

一般都是字符串没有初始化或者越界

㈤ C语言关于字符指针变量和字符数组的说法

这里的“字符数组的值”应该指的是字符数组的地址,如果修改了这个地址,就无法找到该数组了,因此是不能变的。
比如,
char
ch[100];
char
ch2[100];
ch
=
ch2;
//错误,ch的值不能变化

㈥ C语言Char指针

cout<<操作符的问题·
当<<跟的是char*的话,就输出字符串
p和&a[0]是char*类型,所以是输出数组的整个字符串
cout<<(void*)p<<endl;//可输出p的内容,即数组的首地址
cout<<&a<<endl;//输出a的首地址

㈦ C语言 char 字符数组 和 字符指针 作为 函数参数 的区别

在C语言中,数组作为参数,进行传递时,传递的是指针 ,换句话说,字符数组作为参数,进行传递时,传递的是字符数组的起始地址,相当于一个字符指针,两者没有区别。比如下面的代码:

#include<stdio.h>

voidf1(char*s){printf("%s ",s);}
voidf2(charsa[]){printf("%s ",sa);}

intmain()
{
charrsa[]="worldhello";
f1(rsa);
f2(rsa);
return0;
}

㈧ C语言中字符数组和字符指针

char c[10] 这里是在编译的时候就为你分配好了安全合法的内存区域。一共10个字节。它在存在于内存的栈。也就是说它的生命周期是随着函数的结束而结束(除非你把它声明成一个全局的)。当它在main()中声明,那么main()完了就释放。如果它存在于子函数,那么子函数完了就被自动释放这十个字节的空间。

第二种是动态分配内存。
也就是说程序在运行的时候才分配内存。同样也是合法安全的区域。也一样是10个字节。这个区域存在于内存的堆部分。堆上的空间系统能是不会自动释放的,要你手动释放,所以一个malloc要对应一个free 不然会造成空间的严重浪费。

补充回答:
原则是你需要用多少就申请多少。如果你想释放一部分空间。那么你需要的是重新分配。用realloc()函数。这个函数会重新分配空间,并把原先的内容拷贝到新开辟的空间上去。
详细请参看:http://ke..com/view/736230.htm
realloc()函数的说明,里头有我的编辑说明。这里就不多说了。

㈨ 一个 (包含10个char类型指针的数组) 的指针,用c语言怎么表示

char* (*p)[10];
我就解释一下吧:
这是一个复杂声明语句,关键是看标识符和声明符结合的优先级,首先“ * ”和“ p ”结合,表示你声明了一个指针,然后“ (*P) ”和“ [] ”结合,表示你声明的是一个指向数组的指针,最后“ (*p)[10] ”和“ char* ”结合,表示你声明的指针指向的数组的数组元素是char*,即char指针

㈩ C语言中char数组与char指针问题

要用指针是要给它分配内存空间的,指针与数组的最大区别就是,指针可以动态申请内存,而数组的空间大小是固定的,本例中,你无法预知envdir的长度,用指针时在分配空间是同样无法预知malloc的数量,所以建议声明一个足够大的数组即可(例如1024大小),还有每次重新使用logname时最好用memset置一下零,若是内存受限的系统的话,就要好好斟酌一下数组的大小了。望能解答你的疑问。