A. 用c語言指針數組編程實現:
#include<stdio.h>
#include<stdlib.h>
intmain()
{
char*a[]={"鼠","牛","虎","兔","龍","蛇","馬","羊","猴","雞","狗","豬"};
intyear,y;
scanf("%d",&year);
y=year<0?year+1:year;//注意:沒有公元0年,公元前1年緊接著公元1年
while(y<0)y+=12;
printf("公元%s%d年是%s年 ",year<0?"前":"",abs(year),a[(y+8)%12]);
return0;
}
B. 怎麼才能用c語言中的指針與數組做一個簡單的項目
我估計有可能你的問題在於:
把char t定義在了for循環裡面,而不是開始就聲明。
vc裡面,如果寫c文件而不是cpp
函數裡面所有的變數都要在開頭聲明好。
如果僅僅是定義char型,我試過了,沒問題。
補充答復:
樓主:我把示例給你看:
void testfun(char *s)
{
//定義變數
int i;
char t;
int n=strlen(s);
//在開始所有語句之前把變數聲明好。
for(i=0;i<n/2;i++)
{
t=*(s+i);
*(s+i)=*(s+n-1-i);
*(s+n-1-i)=t;
}
}
只要在子函數里,在前面聲明好就OK。
記住是在使用其他任何語句之前先聲明好變數。
如果要追究原因,那就是編譯器的問題。
vc編譯c文件確實存在這個問題,
如果是linux下的cc就不存在這個問題。
如果是vc編譯cpp也不存在這個問題。
如果要再深究,vc為什麼編譯c會存在這個問題,那就要問做vc的人了,或者其他高手請幫忙解答。我也不明白了。
C. C語言指針數組
哥們!建議你寫完一個程序之後如果編譯器報錯!先認真的看一遍!
一些很明顯的錯誤可以很容易的發現的!例如你的i應該是<2;
而不是24!
j應該是<3而不是小於5;
不然你的指針都指到數組外面去了!
還有你聲明的p的類型是int*;
a的類型是int**;
他們是不能直接賦值的!
可以改為 p=a[0]; 或者你直接定義int **p;
吧p定義成二級指針也可以!
幫你把代碼修改如下!
#include<iostream>
using namespace std;
void main()
{
int *p;
int a[2][3];
int q=0;
p=a[0];
for(int i=0;i<2;i++)
for(int j=0;j<3;j++)
{
q+=1;
*(p+3*i+j)=q;
}
for(int k=0;k<6;k++)
cout<<*(p+k)<<endl;
}
輸出 數組的值為:
1
2
3
4
5
6
是否可以解決您的問題?
D. C語言 指針數組
指針是沒有數據存放空間的,所以聲明指針數組後,要給各指針動態分配存儲單元。下面例子,每個指針分配120位元組。
#include <stdio.h>
int main()
{
char *p[5];
int i;
for (i=0;i<5;i++) p[i]=(char *) malloc(sizeof(char)*120);
printf("input 5 line strings\n");
for (i=0;i<5;i++) gets(p[i]); // 輸入5行 字元
printf("\n======Output:=======\n");
for (i=0;i<5;i++) puts(p[i]); //輸出 5行
return 0;
}
E. c語言指針數組
要知道C裡面其實是沒有字元串型的,定義一個字元串只能類似:
char *str=「i love c」;
要列印出這個字元串printf(「%s」,str),那個*號表明str也是一個地址,
所以本質上說C語言中所謂的字元串變數其實就是一個地址。printf(「%s」,str)這個函數的原理是從str指向的地址讀取字元並輸出,直到遇到第一個表示字元串結束的字元(即『\0')。
F. c語言 指針數組
#include<iostream>
using namespace std;
void find(int* a, int length, int x) {
int* p = a;
int* q = a + length - 1;
int* r;
while(p < q) {
r = p + (q - p) / 2;
if(*r == x) {
cout<<"找到了!"<<endl;
return;
} else if(*r > x) {
q = r - 1;
} else {
p = r + 1;
}
}
cout<<"找不到了,放棄吧"<<endl;
}
void main() {
int len;
cout<<"想輸幾個數?"<<endl;
cin>>len;
if(len < 0) {
cout<<"你是在玩我嗎?"<<endl;
return;
}
int* a = new int[len];
for(int i = 0; i < len; i++) {
cout<<"輸入第"<<i<<"個數:"<<endl;
cin>>a[i];
}
int x;
cout<<"想找哪個數?"<<endl;
cin>>x;
find(a,len,x);
}
G. c語言編程(指針的指針,指針數組)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
voidsort(char*s[],intn){
inthalf=n/2;
intleft,right,i;
char**t;
if(n==1)return;
sort(s,half);
sort(s+half,n-half);
left=0;
right=half;
t=(char**)malloc(sizeof(char*)*n);
i=0;
while(left<half&&right<n){
if(strcmp(s[left],s[right])<0){
t[i]=s[left];
i++;
left++;
}
else{
t[i]=s[right];
i++;
right++;
}
}
while(left<half){
t[i]=s[left];
i++;
left++;
}
while(right<n){
t[i]=s[right];
i++;
right++;
}
memcpy(s,t,sizeof(char*)*n);
free(t);
}
H. c語言 如何寫一個指向指針數組的指針
typedefint*typeof_array1[3];
typeof_array1*array2=&array1;
I. C語言指針數組
P取的是地址,但是P取的地址可能是數組的首地址,那麼P就可以表示數組
J. 關於c語言指針數組·
這個問題好理解啊,char *p[2]是指針數組,數組兩個元素是字元型指針p[0]和p[1]分別指向「abc」和「deg」(相當於字元數組)的首地址,以%s方式輸出就輸出了字元串啊,例如:char *pt;pt="abc";printf("%s",pt);
研究它:int *p[2]={"21","32"},相當於 int *pt;pt="21";printf("%s",pt);你再試試用%d輸出下,哈哈,迷糊不
其實用什麼類型的指針都是指向一塊內存的首地址,只不過你用這指針時,例如int*p,那麼p++,一下就往後數4個位元組,,看你悟性了,輸出格式起決定性作用,%d格式輸出就輸出首地址,%s格式輸出就輸出字元串。