c語言一維數組指針數組
1. 寫程序(c語言),使用指針實現列印一維數組所有元素的操作。
#include<stdio.h>
voidmain()
{
inta[100],*p;
intn,t;/*你所要輸入數字的個數*/
p=a;
printf("pleaseinputnumbern:");
scanf("%d",&n);
t=n;
while(n--)scanf("%d",p++);/*以此輸入要輸入的數字*/
p=p-t;
for(inti=0;i<t;i++)
{
if(i%4==0)printf(" ");
printf("%d ",*(p++));
}
printf(" ");
}
運行結果見附圖
2. c語言,指向一維數組的指針變數
p=&a;才是=號兩邊類型復匹配。因為p被聲制明為指向有4個元素的一維整型數組的指針,而a被定義為一個整型數組的第一個元素的指針,所以寫成p=a;等號兩邊類型不匹配,連編譯都過不了。而&a就是一個有4個整型元素的一維數組的指針——就是說在int a[4]={1,3,5,7};的定義後,a是1的地址,a+1就2的地址;而&a的值雖與a相同,但&a是整個數組{1,3,5,7}的地址,&a+1就指向7後面的那個單元了。而int (*p)[4];這種聲明恰好就是&a的意思,即p是個指針,指向一個4元素整型數組,也就是p+1就要跳過4個int元素所佔有的空間。
printf("%d ",(*p)[3]);中的(*p)[3]的意思是這樣的:有了p=&a;後,p的地址「值」就是1的地址「值」,但意思是緊挨著存放的1,3,5,7這4個int數的首地址,*p後就是第一個元素1的地址了,那麼(*p)[3]就向後移動3個元素位置,應該是7了……這里把*p用()括起來是因為[]的優先順序比*高,不括起來就被解釋成*(p[3])了,意思就大錯了!
這里涉及的指針操作表述起來有些「繞」,得慢慢體會……
3. 請問C語言里一維數組能用數組指針嗎如果可以怎麼用呢
數組指針可以指向一維數組的。
指針本來就是變數,是用來存放地址的變數。
如:
int (*a)[3],b[12];
a=b;
a++;
之後,*a相當於a[3]
4. c語言一維數組與指針
指針p原來指向數組a的首地址即a[0]
p+1指向a[1]的地址。
所以對此地址取值:*(p+1),這就是a[1]的值。
5. c語言一維數組,指針,動態存儲分配
#include<stdio.h>
#include<string.h>
intmain()
{intn,i,*p;
scanf("%d",&n);
p=(int*)malloc(sizeof(int)*n);
for(i=0;i<n;i++)
{*(p+i)=i+1;
printf("%d",p[i]);
}
return0;
}
6. c語言中指向一維數組的指針個指針數組有什麼區別: 例如int a[3][2]; int (*p
int (*p)[2]是一維數組的指針,數組裡面的元素是整形,指針指向這個數組,
int *p[3]是指針數組,首先是個數組,這個數組裡面存放的元素都是指針
7. c語言一維數組與指針
數組名稱實際上就是一個指向首地址的指針,增加其值向後指,減少其值向前指,版注意別指空了,所以你定義權一個指向數組的指針只不過是定義了一個數組別名,數組怎麼用指針就能怎麼用,反過來指針怎麼用數組名就能怎麼用
8. C語言中一維數組和指針有什麼區別
指針,它被用來存放地址用。
聲明 char *b; 就是定了 一個存放地址 的單元,這個單元大小是4位元組,裡面 只能 放下 一個地址,而且 只能用於 指向 一個 char型數據。
一維數組 用於存放 數據, 例如 char s[10], 它有10個存貯單元,可以存放 10個 char 數據。
一個 char型數據 占 1個位元組。
指針 沒有存放數據 的空間。
讓 char *b; 獲得 存放數據 的空間,可以用 動態分配,例如
b = (char *) malloc(sizeof(char) * 10); 這樣一來,它就有了 10個 char 數據 存放的空間了。
這樣就正確了:
char *b;
b = (char *) malloc(sizeof(char) * 10);
b[0]='z'; b[1]='b'; b[2]='\0';
printf("%c %c\n",b[0],b[1]);
printf("%s",b);
另一個辦法是讓 b 指向 一個 已經有存放空間的 數組:
char *b;
char a[10];
b = a; // 讓 b 指向a數組
b[0]='z'; b[1]='b'; b[2]='\0'; //於是就正確了
printf("%c %c\n",b[0],b[1]);
printf("%s",b);
9. C語言指針指向一維數組與二維數組
10. C語言指針和一維數組的問題
int *p=a;
實際就是等價於 int *p; p=a;
是聲明並初始化時的簡略寫法。