當前位置:首頁 » 編程語言 » c語言指針轉數組
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言指針轉數組

發布時間: 2022-09-14 03:00:55

㈠ 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,於是指向數組第二個