當前位置:首頁 » 編程語言 » 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置一下零,若是內存受限的系統的話,就要好好斟酌一下數組的大小了。望能解答你的疑問。