新聞中心
C語(yǔ)言里開辟內(nèi)存空間后如何讓指針?lè)祷貎?nèi)存首地址
你沒(méi)在最后添加結(jié)束符'\0',修改如下
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、虛擬空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、甘南網(wǎng)站維護(hù)、網(wǎng)站推廣。
#include stdio.h
#include stdlib.h
int main()
{
char *p1,*p2,*p3;
char *p=(char*)malloc(1000000);
p1=p;
p2=p;
p3=p2;
gets(p1);
while (*p1!='\0')
{
if(*p1!=' ')
{
*p2=*p1;
p2++;
}
p1++;
}
*p2='\0'; //加上這一句,添加字符串結(jié)束符
puts(p3);
return 0;
}
————————————————————————-
這種輸出又不是沒(méi)用過(guò),沒(méi)問(wèn)題的,可以把代碼貼上來(lái),我試試
————————————————————————————
輸出時(shí)用p3啊,
puts(p3);
或用printf也可以
——————————————————————————
汗,你聲明一個(gè)char *p3,處理前讓p3=p2不就行了
c語(yǔ)言問(wèn)題
#includestdio.h
int?loc(int?num,int?a[],int?length);????/*改動(dòng)過(guò),加上參數(shù)*/
int?main()
{
int?a[]={1,2,3,4,5,6,7,8};????/*改動(dòng)過(guò),去掉最后面的逗號(hào)*/
int?num;//num=number;
int?ret;
scanf("%d",num);????/*改動(dòng)過(guò),加上*/
ret=loc(num,a,sizeof(a)/sizeof(a[0]));?
if?(ret?!=?-1){????????????/*改動(dòng)過(guò),loc改成了ret*/
printf("cunzai,%d",ret);????/*改動(dòng)過(guò),loc改成了ret*/
}?else?{
printf("bucunzai");
}
}
C語(yǔ)言smlloc函數(shù)的用法
smlloc?不知道哦
是malloc?
或者calloc?
下面兩個(gè)倒是知道
函數(shù)malloc()和calloc()都可以用來(lái)動(dòng)態(tài)分配
內(nèi)存空間,但兩者稍有區(qū)別。
malloc()函數(shù)有一個(gè)參數(shù),即要分配的內(nèi)存空間
的大小:
void *malloc(size_t size);
calloc()函數(shù)有兩個(gè)參數(shù),分別為元素的數(shù)目和
每個(gè)元素的大小,這兩個(gè)參數(shù)的乘積就是要分配
的內(nèi)存空間的大小。
void *calloc(size_t numElements,size_t
sizeOfElement);
如果調(diào)用成功,函數(shù)malloc()和函數(shù)calloc()都
將返回所分配的內(nèi)存空間的首地址。
函數(shù)malloc()和函數(shù)calloc()的主要區(qū)別是前
者不能初始化所分配的內(nèi)存空間,而后者能。如
果由malloc()函數(shù)分配的內(nèi)存空間原來(lái)沒(méi)有被
使用過(guò),則其中的每一位可能都是0;反之,如果
這部分內(nèi)存曾經(jīng)被分配過(guò),則其中可能遺留有各
種各樣的數(shù)據(jù)。也就是說(shuō),使用malloc()函數(shù)
的程序開始時(shí)(內(nèi)存空間還沒(méi)有被重新分配)能
正常進(jìn)行,但經(jīng)過(guò)一段時(shí)間(內(nèi)存空間還已經(jīng)被
重新分配)可能會(huì)出現(xiàn)問(wèn)題。
函數(shù)calloc()會(huì)將所分配的內(nèi)存空間中的每一
位都初始化為零,也就是說(shuō),如果你是為字符類
型或整數(shù)類型的元素分配內(nèi)存,那麼這些元素將
保證會(huì)被初始化為0;如果你是為指針類型的元
素分配內(nèi)存,那麼這些元素通常會(huì)被初始化為空
指針;如果你為實(shí)型數(shù)據(jù)分配內(nèi)存,則這些元素
會(huì)被初始化為浮點(diǎn)型的零。
C語(yǔ)言函數(shù)-字符串疑問(wèn)
這個(gè)程序的改動(dòng)可大可小,如果不是通用算法,針對(duì)于你給的題目的改動(dòng)(假設(shè)兩個(gè)串長(zhǎng)度固定且已經(jīng)知道)
需要改動(dòng)的地方,第二個(gè)函數(shù),我把函數(shù)給出來(lái)
int strLoc (char str1[],char str2[])
{
int j;
int n=-1;
for(j=0;j14;j++)
if(str1[0]==str2[j]str[1]==str2[j+1])
{n=j; break;}
return (n);
}
如果要通用算法,就是不知道是什么字符串,也不知道長(zhǎng)度,程序如下:
int strLoc (char str1[],str2[])
{
int i,j;
int n=-1;
for(j=0;jstrlen(str2);j++)
{for(i=0;istrlen(str1);i++)
if(str1[i]!=str2[i+j])
break;
if (i!=strlen(str1))
continue;
else
break;
}
if (j!=strlen(str2))
return(j);
else
return(n);
}
n=-1;
return (n);
}
主函數(shù)也給你把,看你的主函數(shù)也不太好
void main(int argc, char* argv[])
{
char str1[]={"do"};
char str2[]={"how do you do?"};
int n;
n=strLoc (str1,str2);
if (n!=-1)
printf("the same word begin at %d",n);
else
printf("%s中沒(méi)有%s這個(gè)字符串",str1,str2);
}
怎么計(jì)算三維數(shù)組的存儲(chǔ)地址?
假設(shè)數(shù)組各維的下界是不是1,二維數(shù)組A(mn)按“行優(yōu)先順序”存儲(chǔ)在內(nèi)存中,假設(shè)每個(gè)元素占用d個(gè)存儲(chǔ)單元。元素a(ij)的存儲(chǔ)地址應(yīng)是數(shù)組的基地址加上排在a(ij)前面的元素所占用的單元數(shù)。因?yàn)閍(ij)位于第i行、第j列,前面i-1行一共有(i-1)×n個(gè)元素,第i行上a(ij)前面又有j-1個(gè)元素,故它前面一共有(i-1) ×n+j-1個(gè)元素。
因此,a(ij)的地址計(jì)算函數(shù)為:LOC(aij)=LOC(a11)+[(i-1)*n+j-1]*d。
同樣,三維數(shù)組A(ijk)按“行優(yōu)先順序”存儲(chǔ),其地址計(jì)算函數(shù)為:LOC(aijk)=LOC(a111)+[(i-1)*n*p+(j-1)*p+(k-1)]*d。
上述討論均是假設(shè)數(shù)組各維的下界是1,更一般的二維數(shù)組是A[c1..d1,c2..d2],這里c1,c2不一定是1。a(ij)前一共有i-c1行,二維數(shù)組一共有d2-c2+1列,故這i-c1行共有(i-c1)*(d2-c2+1)個(gè)元素,第i行上a(ij)前一共有j-c2個(gè)元素。
因此,a(ij)的地址計(jì)算函數(shù)為:LOC(aij)=LOC(ac1c2)+[(i-c1)*(d2-c2+1)+j-c2)]*d。
例如,在C語(yǔ)言中,數(shù)組各維下標(biāo)的下界是0,因此在C語(yǔ)言中,二維數(shù)組的地址計(jì)算公式為:LOC(aij)=LOC(a00)+(i*(d2+1)+j)*d。
C語(yǔ)言的這個(gè)怎么做?
您好,對(duì)于你的遇到的問(wèn)題,我很高興能為你提供幫助,我之前也遇到過(guò)喲,以下是我的個(gè)人看法,希望能幫助到你,若有錯(cuò)誤,還望見諒!。展開全部
#includestdio.h
int main()
{
int max=0,min=0,aver=0;
int a[11];
int *p=a;//定義指針變量p,并指向數(shù)組a的首地址
for(;pa+10;p++)
scanf("%d",p);//利用指針偏移,向數(shù)組中輸入10個(gè)整型數(shù)據(jù)
max=min=a[0];
for(p=a;pa+10;p++)
if(*pmax)
max=*p;//記錄最大值
else if(*pmin)
min=*p;//記錄最小值
for(p=a;pa+1;p++)
aver+=*p;//累加求和
aver/=10;//除以10求平均數(shù) 非常感謝您的耐心觀看,如有幫助請(qǐng)采納,祝生活愉快!謝謝!
網(wǎng)頁(yè)題目:c語(yǔ)言loc函數(shù) loop指令C語(yǔ)言
轉(zhuǎn)載來(lái)于:http://ef60e0e.cn/article/hgespd.html